/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Ui;

import com.michaelbaranov.microba.calendar.DatePicker;
import com.toedter.calendar.JDateChooser;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.font.TextAttribute;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import java.util.Observable;
import java.util.Observer;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.RowFilter;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;

/**
 *
 * @author Esteban
 */
public class VentanaModuloProfesorEstandar extends javax.swing.JFrame implements Observer{

    /**
     * Creates new form VentanaModuloEstudianteEstandar
     */
    public VentanaModuloProfesorEstandar() {
        initComponents();
        initComponents2();
        initComponents3();
        initComponents4();
        initComponents5();
        initComponents6();
        initComponents7();
        initComponents8();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        panelImagenProfesor = new org.edisoncor.gui.panel.PanelImage();
        jLabel2 = new javax.swing.JLabel();
        jLabel1 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        jLabel6 = new javax.swing.JLabel();
        panelImagenProfesor2 = new org.edisoncor.gui.panel.PanelImage();
        panelOpcionesProfesor = new javax.swing.JTabbedPane();
        panelCrearExpediente = new javax.swing.JPanel();
        panelManejoExpediente = new javax.swing.JPanel();
        nombreProfAgregar = new javax.swing.JLabel();
        apellido1ProfAgregar = new javax.swing.JLabel();
        apellido2ProfAgregar = new javax.swing.JLabel();
        cedulaProfAgregar = new javax.swing.JLabel();
        fechaNacProfAgregar = new javax.swing.JLabel();
        correoProf1Agregar = new javax.swing.JLabel();
        InfoProfAgregar = new javax.swing.JLabel();
        campoNombreProfAgregar = new javax.swing.JTextField();
        campoApellido1ProfAgregar = new javax.swing.JTextField();
        campoApellido2ProfAgregar = new javax.swing.JTextField();
        campoCedulaProfAgregar = new javax.swing.JTextField();
        campoEmailProf1Agregar = new javax.swing.JTextField();
        btnNuevoProfAgregar = new javax.swing.JButton();
        btnCancelarProfAgregar = new javax.swing.JButton();
        btnCrearProfAgregar = new javax.swing.JButton();
        tel1ProfAgregar = new javax.swing.JLabel();
        tel2ProfAgregar = new javax.swing.JLabel();
        campoTel1ProfAgregar = new javax.swing.JTextField();
        campoTel2ProfAgregar = new javax.swing.JTextField();
        astNombreProfAgregar = new javax.swing.JLabel();
        astApellido1ProfAgregar = new javax.swing.JLabel();
        astCedulaProfAgregar = new javax.swing.JLabel();
        astFechaNacProfAgregar = new javax.swing.JLabel();
        astTel1ProfAgregar = new javax.swing.JLabel();
        astCorreoProfAgregar = new javax.swing.JLabel();
        correoProf2Agregar = new javax.swing.JLabel();
        campoEmailProf2Agregar = new javax.swing.JTextField();
        estadoProfAgregar = new javax.swing.JLabel();
        astEstadoProfAgregar = new javax.swing.JLabel();
        estadoActivoProfAgregar = new javax.swing.JRadioButton();
        estadoInactivoProfAgregar = new javax.swing.JRadioButton();
        campoFechaNacProfAgregar = new com.toedter.calendar.JDateChooser();
        panelActualizarExpediente = new javax.swing.JScrollPane();
        panelActualizarExpediente2 = new javax.swing.JPanel();
        panelManejoExpediente2 = new javax.swing.JPanel();
        btnActualizarProf = new javax.swing.JButton();
        btnCancelarProfAct = new javax.swing.JButton();
        busquedaProfActualizar = new javax.swing.JLabel();
        campoBusquedaProfActualizar = new javax.swing.JTextField();
        scrollProfesoresActualizar = new javax.swing.JScrollPane();
        tablaProfesoresActualizar = new javax.swing.JTable();
        cedulaProfAct = new javax.swing.JLabel();
        nombreProfAct = new javax.swing.JLabel();
        apellido1ProfAct = new javax.swing.JLabel();
        astNombreProfAct = new javax.swing.JLabel();
        astCedulaProfAct = new javax.swing.JLabel();
        astApellidoProf1Act = new javax.swing.JLabel();
        apellido2ProfAct = new javax.swing.JLabel();
        fechaNacProfAct = new javax.swing.JLabel();
        astFechaNacProfAct = new javax.swing.JLabel();
        campoFechaNacProfAct = new com.toedter.calendar.JDateChooser();
        campoApellido2ProfAct = new javax.swing.JTextField();
        campoApellido1ProfAct = new javax.swing.JTextField();
        campoNombreProfAct = new javax.swing.JTextField();
        campoCedulaProfAct = new javax.swing.JTextField();
        InfoProfAct = new javax.swing.JLabel();
        correoProf1Act = new javax.swing.JLabel();
        astCorreoAct = new javax.swing.JLabel();
        campoEmailProf1Act = new javax.swing.JTextField();
        campoEmailProf2Act = new javax.swing.JTextField();
        correoProf2Act = new javax.swing.JLabel();
        tel1ProfAct = new javax.swing.JLabel();
        tel2ProfAct = new javax.swing.JLabel();
        astTel1ProfAct = new javax.swing.JLabel();
        estadoProfAct = new javax.swing.JLabel();
        astEstadoProfAct = new javax.swing.JLabel();
        campoTel2ProfAct = new javax.swing.JTextField();
        campoTel1ProfAct = new javax.swing.JTextField();
        estadoActivoProfAct = new javax.swing.JRadioButton();
        estadoInactivoProfAct = new javax.swing.JRadioButton();
        panelEliminarExpediente = new javax.swing.JPanel();
        panelManejoExpediente3 = new javax.swing.JPanel();
        busquedaProfEliminar = new javax.swing.JLabel();
        campoBusquedaProfEliminar = new javax.swing.JTextField();
        scrollProfesoresEliminar = new javax.swing.JScrollPane();
        tablaProfesoresEliminar = new javax.swing.JTable();
        panelMostrarExpediente = new javax.swing.JPanel();
        panelManejoExpediente4 = new javax.swing.JPanel();
        busquedaProfMostrar = new javax.swing.JLabel();
        campoBusquedaProfMostrar = new javax.swing.JTextField();
        scrollProfesoresMostrar = new javax.swing.JScrollPane();
        tablaProfesoresMostrar = new javax.swing.JTable();
        panelAsignacionCursos = new javax.swing.JScrollPane();
        panelAsignacionCursos2 = new javax.swing.JPanel();
        panelManejoAsignacion = new javax.swing.JPanel();
        busquedaProfAsignar = new javax.swing.JLabel();
        campoBusquedaProfAsignar = new javax.swing.JTextField();
        scrollProfesoresAsignar = new javax.swing.JScrollPane();
        tablaProfesoresAsignar = new javax.swing.JTable();
        campoBusquedaCursoAsignar = new javax.swing.JTextField();
        busquedaCursoAsignar = new javax.swing.JLabel();
        scrollCursosAsignar = new javax.swing.JScrollPane();
        tablaCursosAsignar = new javax.swing.JTable();
        seleccionCurso = new javax.swing.JLabel();
        seleccioProfesor = new javax.swing.JLabel();
        btnCancelarAsignacion = new javax.swing.JButton();
        btnRegistrarAsignacion = new javax.swing.JButton();
        panelDesasignacionCursos = new javax.swing.JScrollPane();
        panelDesasignacionCursos2 = new javax.swing.JPanel();
        panelManejoDesasignacion = new javax.swing.JPanel();
        busquedaProfDesasignar = new javax.swing.JLabel();
        campoBusquedaProfDesasignar = new javax.swing.JTextField();
        scrollProfesoresDesasignar = new javax.swing.JScrollPane();
        tablaProfesoresDesasignar = new javax.swing.JTable();
        campoBusquedaCursoDesasignar = new javax.swing.JTextField();
        busquedaCursoDesasignar = new javax.swing.JLabel();
        scrollCursosDesasignar = new javax.swing.JScrollPane();
        tablaCursosDesasignar = new javax.swing.JTable();
        seleccionCursoDesasignacion = new javax.swing.JLabel();
        seleccioProfesorDesasignacion = new javax.swing.JLabel();
        btnCancelarDesasignacion = new javax.swing.JButton();
        btnRealizarDesasignacion = new javax.swing.JButton();
        panelMostrarAsignacionesCursos = new javax.swing.JPanel();
        panelManejoMostrarAsignaciones = new javax.swing.JPanel();
        scrollMostrarAsignaciones = new javax.swing.JScrollPane();
        tablaMostrarAsignaciones = new javax.swing.JTable();
        campoBusqueda = new javax.swing.JTextField();
        asignacionMostrar = new javax.swing.JLabel();
        btnBusqueda = new javax.swing.JButton();
        btnCancelarBusqueda = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        panelImagenProfesor.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Img/BarraTituloFinal2.png"))); // NOI18N
        panelImagenProfesor.setPreferredSize(new java.awt.Dimension(840, 60));

        jLabel2.setBackground(new java.awt.Color(255, 255, 255));
        jLabel2.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N
        jLabel2.setForeground(new java.awt.Color(255, 255, 255));
        jLabel2.setText("SMAMM 2.1");

        jLabel1.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N
        jLabel1.setForeground(new java.awt.Color(255, 255, 255));
        jLabel1.setText("Módulo de Gestión de Profesores");

        jLabel3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Img/SignedAs.png"))); // NOI18N

        jLabel4.setForeground(new java.awt.Color(255, 255, 255));
        jLabel4.setText("Esteban");

        jLabel5.setForeground(new java.awt.Color(255, 255, 255));
        jLabel5.setText("Registrado(a) como:");

        jLabel6.setForeground(new java.awt.Color(255, 255, 255));
        jLabel6.setText("Cerrar sesión");
        jLabel6.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseEntered(java.awt.event.MouseEvent evt) {
                jLabel6MouseEntered(evt);
            }
            public void mouseExited(java.awt.event.MouseEvent evt) {
                jLabel6MouseExited(evt);
            }
            public void mousePressed(java.awt.event.MouseEvent evt) {
                jLabel6MousePressed(evt);
            }
        });

        javax.swing.GroupLayout panelImagenProfesorLayout = new javax.swing.GroupLayout(panelImagenProfesor);
        panelImagenProfesor.setLayout(panelImagenProfesorLayout);
        panelImagenProfesorLayout.setHorizontalGroup(
            panelImagenProfesorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelImagenProfesorLayout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 413, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(142, 142, 142)
                .addComponent(jLabel2)
                .addGap(158, 158, 158)
                .addComponent(jLabel3)
                .addGroup(panelImagenProfesorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(panelImagenProfesorLayout.createSequentialGroup()
                        .addGap(28, 28, 28)
                        .addComponent(jLabel5)
                        .addGap(26, 26, 26)
                        .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 93, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(panelImagenProfesorLayout.createSequentialGroup()
                        .addGap(101, 101, 101)
                        .addComponent(jLabel6)))
                .addGap(41, 41, 41))
        );
        panelImagenProfesorLayout.setVerticalGroup(
            panelImagenProfesorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelImagenProfesorLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(panelImagenProfesorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(panelImagenProfesorLayout.createSequentialGroup()
                        .addGroup(panelImagenProfesorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel5)
                            .addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jLabel6)
                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addGroup(panelImagenProfesorLayout.createSequentialGroup()
                        .addGroup(panelImagenProfesorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(jLabel1)
                            .addGroup(panelImagenProfesorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                .addComponent(jLabel2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addComponent(jLabel3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
        );

        panelImagenProfesor2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Img/FondoBlanco.png"))); // NOI18N
        panelImagenProfesor2.setPreferredSize(new java.awt.Dimension(840, 60));

        panelOpcionesProfesor.addChangeListener(new javax.swing.event.ChangeListener() {
            public void stateChanged(javax.swing.event.ChangeEvent evt) {
                panelOpcionesProfesorStateChanged(evt);
            }
        });

        panelCrearExpediente.setBackground(new java.awt.Color(255, 255, 255));

        panelManejoExpediente.setBackground(new java.awt.Color(255, 255, 255));
        panelManejoExpediente.setBorder(javax.swing.BorderFactory.createTitledBorder(new javax.swing.border.LineBorder(new java.awt.Color(204, 204, 204), 1, true), "Creación de Expediente de Profesor", javax.swing.border.TitledBorder.LEFT, javax.swing.border.TitledBorder.TOP, new java.awt.Font("Calibri", 1, 18))); // NOI18N
        panelManejoExpediente.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        nombreProfAgregar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        nombreProfAgregar.setText("Nombre:");
        panelManejoExpediente.add(nombreProfAgregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 160, -1, -1));

        apellido1ProfAgregar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        apellido1ProfAgregar.setText("Primer Apellido:");
        panelManejoExpediente.add(apellido1ProfAgregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 190, 120, -1));

        apellido2ProfAgregar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        apellido2ProfAgregar.setText("Segundo Apellido:");
        panelManejoExpediente.add(apellido2ProfAgregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 220, -1, -1));

        cedulaProfAgregar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        cedulaProfAgregar.setText("Cédula:");
        panelManejoExpediente.add(cedulaProfAgregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 130, 80, -1));

        fechaNacProfAgregar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        fechaNacProfAgregar.setText("Fecha de Nacimiento:");
        panelManejoExpediente.add(fechaNacProfAgregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 250, 150, -1));

        correoProf1Agregar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        correoProf1Agregar.setText("Correo electrónico 1:");
        panelManejoExpediente.add(correoProf1Agregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(580, 130, 160, -1));

        InfoProfAgregar.setFont(new java.awt.Font("Calibri", 1, 16)); // NOI18N
        InfoProfAgregar.setText("Información requerida del Profesor Nuevo");
        panelManejoExpediente.add(InfoProfAgregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(360, 40, -1, -1));

        campoNombreProfAgregar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        campoNombreProfAgregar.setCursor(new java.awt.Cursor(java.awt.Cursor.TEXT_CURSOR));
        campoNombreProfAgregar.setEnabled(false);
        campoNombreProfAgregar.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                campoNombreProfAgregarKeyReleased(evt);
            }
            public void keyTyped(java.awt.event.KeyEvent evt) {
                campoNombreProfAgregarKeyTyped(evt);
            }
        });
        panelManejoExpediente.add(campoNombreProfAgregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(250, 160, 205, -1));

        campoApellido1ProfAgregar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        campoApellido1ProfAgregar.setEnabled(false);
        campoApellido1ProfAgregar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                campoApellido1ProfAgregarActionPerformed(evt);
            }
        });
        campoApellido1ProfAgregar.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                campoApellido1ProfAgregarKeyTyped(evt);
            }
        });
        panelManejoExpediente.add(campoApellido1ProfAgregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(250, 190, 205, -1));

        campoApellido2ProfAgregar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        campoApellido2ProfAgregar.setEnabled(false);
        campoApellido2ProfAgregar.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                campoApellido2ProfAgregarKeyTyped(evt);
            }
        });
        panelManejoExpediente.add(campoApellido2ProfAgregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(250, 220, 205, -1));

        campoCedulaProfAgregar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        campoCedulaProfAgregar.setEnabled(false);
        campoCedulaProfAgregar.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                campoCedulaProfAgregarKeyTyped(evt);
            }
        });
        panelManejoExpediente.add(campoCedulaProfAgregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(250, 130, 205, -1));

        campoEmailProf1Agregar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        campoEmailProf1Agregar.setEnabled(false);
        campoEmailProf1Agregar.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                campoEmailProf1AgregarKeyTyped(evt);
            }
        });
        panelManejoExpediente.add(campoEmailProf1Agregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(740, 130, 205, -1));

        btnNuevoProfAgregar.setText("Nuevo ");
        btnNuevoProfAgregar.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                btnNuevoProfAgregarMouseClicked(evt);
            }
        });
        panelManejoExpediente.add(btnNuevoProfAgregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(340, 340, 95, 48));

        btnCancelarProfAgregar.setText("Cancelar");
        btnCancelarProfAgregar.setEnabled(false);
        btnCancelarProfAgregar.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                btnCancelarProfAgregarMouseClicked(evt);
            }
        });
        btnCancelarProfAgregar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCancelarProfAgregarActionPerformed(evt);
            }
        });
        panelManejoExpediente.add(btnCancelarProfAgregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(580, 340, 95, 48));

        btnCrearProfAgregar.setText("Crear");
        btnCrearProfAgregar.setEnabled(false);
        btnCrearProfAgregar.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                btnCrearProfAgregarMouseClicked(evt);
            }
        });
        panelManejoExpediente.add(btnCrearProfAgregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(460, 340, 95, 48));

        tel1ProfAgregar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        tel1ProfAgregar.setText("Teléfono 1:");
        panelManejoExpediente.add(tel1ProfAgregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(580, 190, -1, -1));

        tel2ProfAgregar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        tel2ProfAgregar.setText("Teléfono 2:");
        panelManejoExpediente.add(tel2ProfAgregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(580, 220, -1, -1));

        campoTel1ProfAgregar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        campoTel1ProfAgregar.setEnabled(false);
        campoTel1ProfAgregar.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                campoTel1ProfAgregarKeyTyped(evt);
            }
        });
        panelManejoExpediente.add(campoTel1ProfAgregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(740, 190, 205, -1));

        campoTel2ProfAgregar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        campoTel2ProfAgregar.setEnabled(false);
        campoTel2ProfAgregar.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                campoTel2ProfAgregarKeyTyped(evt);
            }
        });
        panelManejoExpediente.add(campoTel2ProfAgregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(740, 220, 205, -1));

        astNombreProfAgregar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Img/asterisco.png"))); // NOI18N
        astNombreProfAgregar.setToolTipText("Espacio requerido");
        panelManejoExpediente.add(astNombreProfAgregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(130, 160, -1, -1));

        astApellido1ProfAgregar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Img/asterisco.png"))); // NOI18N
        astApellido1ProfAgregar.setToolTipText("Espacio requerido");
        panelManejoExpediente.add(astApellido1ProfAgregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(170, 190, -1, -1));

        astCedulaProfAgregar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Img/asterisco.png"))); // NOI18N
        astCedulaProfAgregar.setToolTipText("Espacio requerido");
        panelManejoExpediente.add(astCedulaProfAgregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 130, -1, -1));

        astFechaNacProfAgregar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Img/asterisco.png"))); // NOI18N
        astFechaNacProfAgregar.setToolTipText("Espacio requerido");
        panelManejoExpediente.add(astFechaNacProfAgregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(200, 250, -1, -1));

        astTel1ProfAgregar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Img/asterisco.png"))); // NOI18N
        astTel1ProfAgregar.setToolTipText("Espacio requerido");
        panelManejoExpediente.add(astTel1ProfAgregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(650, 190, -1, -1));

        astCorreoProfAgregar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Img/asterisco.png"))); // NOI18N
        astCorreoProfAgregar.setToolTipText("Espacio requerido");
        panelManejoExpediente.add(astCorreoProfAgregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(700, 130, -1, -1));

        correoProf2Agregar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        correoProf2Agregar.setText("Correo electrónico 2:");
        panelManejoExpediente.add(correoProf2Agregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(580, 160, -1, -1));

        campoEmailProf2Agregar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        campoEmailProf2Agregar.setEnabled(false);
        campoEmailProf2Agregar.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                campoEmailProf2AgregarKeyTyped(evt);
            }
        });
        panelManejoExpediente.add(campoEmailProf2Agregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(740, 160, 205, -1));

        estadoProfAgregar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        estadoProfAgregar.setText("Estado del profesor:");
        panelManejoExpediente.add(estadoProfAgregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(580, 260, -1, -1));

        astEstadoProfAgregar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Img/asterisco.png"))); // NOI18N
        astEstadoProfAgregar.setToolTipText("Espacio requerido");
        panelManejoExpediente.add(astEstadoProfAgregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(710, 260, 10, -1));

        estadoActivoProfAgregar.setText("Activo");
        estadoActivoProfAgregar.setEnabled(false);
        estadoActivoProfAgregar.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                estadoActivoProfAgregarMouseClicked(evt);
            }
        });
        panelManejoExpediente.add(estadoActivoProfAgregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(740, 260, -1, 20));

        estadoInactivoProfAgregar.setText("Inactivo");
        estadoInactivoProfAgregar.setEnabled(false);
        estadoInactivoProfAgregar.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                estadoInactivoProfAgregarMouseClicked(evt);
            }
        });
        panelManejoExpediente.add(estadoInactivoProfAgregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(850, 260, -1, 20));

        campoFechaNacProfAgregar.setToolTipText("");
        campoFechaNacProfAgregar.setDateFormatString("dd-MM-yyyy");
        campoFechaNacProfAgregar.setEnabled(false);
        campoFechaNacProfAgregar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        campoFechaNacProfAgregar.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseReleased(java.awt.event.MouseEvent evt) {
                campoFechaNacProfAgregarMouseReleased(evt);
            }
        });
        campoFechaNacProfAgregar.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                campoFechaNacProfAgregarKeyTyped(evt);
            }
        });
        panelManejoExpediente.add(campoFechaNacProfAgregar, new org.netbeans.lib.awtextra.AbsoluteConstraints(250, 250, 205, 23));

        javax.swing.GroupLayout panelCrearExpedienteLayout = new javax.swing.GroupLayout(panelCrearExpediente);
        panelCrearExpediente.setLayout(panelCrearExpedienteLayout);
        panelCrearExpedienteLayout.setHorizontalGroup(
            panelCrearExpedienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 1224, Short.MAX_VALUE)
            .addGroup(panelCrearExpedienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelCrearExpedienteLayout.createSequentialGroup()
                    .addContainerGap(104, Short.MAX_VALUE)
                    .addComponent(panelManejoExpediente, javax.swing.GroupLayout.PREFERRED_SIZE, 1015, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(105, Short.MAX_VALUE)))
        );
        panelCrearExpedienteLayout.setVerticalGroup(
            panelCrearExpedienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 446, Short.MAX_VALUE)
            .addGroup(panelCrearExpedienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelCrearExpedienteLayout.createSequentialGroup()
                    .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(panelManejoExpediente, javax.swing.GroupLayout.PREFERRED_SIZE, 421, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(13, Short.MAX_VALUE)))
        );

        panelOpcionesProfesor.addTab("Crear Expediente", panelCrearExpediente);

        panelActualizarExpediente2.setBackground(new java.awt.Color(255, 255, 255));

        panelManejoExpediente2.setBackground(new java.awt.Color(255, 255, 255));
        panelManejoExpediente2.setBorder(javax.swing.BorderFactory.createTitledBorder(new javax.swing.border.LineBorder(new java.awt.Color(204, 204, 204), 1, true), "Actualización de Expediente de Profesor", javax.swing.border.TitledBorder.LEFT, javax.swing.border.TitledBorder.TOP, new java.awt.Font("Calibri", 1, 18))); // NOI18N
        panelManejoExpediente2.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        btnActualizarProf.setText("Actualizar");
        btnActualizarProf.setEnabled(false);
        btnActualizarProf.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                btnActualizarProfMouseClicked(evt);
            }
        });
        panelManejoExpediente2.add(btnActualizarProf, new org.netbeans.lib.awtextra.AbsoluteConstraints(355, 710, 130, 48));

        btnCancelarProfAct.setText("Cancelar");
        btnCancelarProfAct.setEnabled(false);
        btnCancelarProfAct.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                btnCancelarProfActMouseClicked(evt);
            }
        });
        btnCancelarProfAct.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCancelarProfActActionPerformed(evt);
            }
        });
        panelManejoExpediente2.add(btnCancelarProfAct, new org.netbeans.lib.awtextra.AbsoluteConstraints(495, 710, 120, 48));

        busquedaProfActualizar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        busquedaProfActualizar.setText("Búsqueda:");
        panelManejoExpediente2.add(busquedaProfActualizar, new org.netbeans.lib.awtextra.AbsoluteConstraints(210, 320, -1, -1));

        campoBusquedaProfActualizar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        campoBusquedaProfActualizar.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                campoBusquedaProfActualizarKeyReleased(evt);
            }
        });
        panelManejoExpediente2.add(campoBusquedaProfActualizar, new org.netbeans.lib.awtextra.AbsoluteConstraints(340, 310, 460, 30));

        scrollProfesoresActualizar.setBackground(new java.awt.Color(0, 153, 204));
        scrollProfesoresActualizar.setBorder(javax.swing.BorderFactory.createTitledBorder(new javax.swing.border.LineBorder(new java.awt.Color(153, 153, 153), 1, true), "Seleccione el profesor registrado a actualizar:", javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.TOP, new java.awt.Font("Calibri", 1, 18), java.awt.Color.white)); // NOI18N

        tablaProfesoresActualizar.setAutoCreateRowSorter(true);
        tablaProfesoresActualizar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        tablaProfesoresActualizar.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Estado", "Cédula del profesor", "Profesor", "Fecha de nacimiento del estudiante", "Correo #1", "Correo #2", "Teléfono #1", "Teléfono #2"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false, false, false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tablaProfesoresActualizar.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
        tablaProfesoresActualizar.setGridColor(new java.awt.Color(0, 204, 204));
        tablaProfesoresActualizar.getTableHeader().setResizingAllowed(false);
        tablaProfesoresActualizar.getTableHeader().setReorderingAllowed(false);
        scrollProfesoresActualizar.setViewportView(tablaProfesoresActualizar);

        panelManejoExpediente2.add(scrollProfesoresActualizar, new org.netbeans.lib.awtextra.AbsoluteConstraints(160, 60, 700, 210));

        cedulaProfAct.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        cedulaProfAct.setText("Cédula:");
        panelManejoExpediente2.add(cedulaProfAct, new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 510, 80, -1));

        nombreProfAct.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        nombreProfAct.setText("Nombre:");
        panelManejoExpediente2.add(nombreProfAct, new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 540, -1, -1));

        apellido1ProfAct.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        apellido1ProfAct.setText("Primer Apellido:");
        panelManejoExpediente2.add(apellido1ProfAct, new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 570, 120, -1));

        astNombreProfAct.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Img/asterisco.png"))); // NOI18N
        astNombreProfAct.setToolTipText("Espacio requerido");
        panelManejoExpediente2.add(astNombreProfAct, new org.netbeans.lib.awtextra.AbsoluteConstraints(130, 540, -1, -1));

        astCedulaProfAct.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Img/asterisco.png"))); // NOI18N
        astCedulaProfAct.setToolTipText("Espacio requerido");
        panelManejoExpediente2.add(astCedulaProfAct, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 510, -1, -1));

        astApellidoProf1Act.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Img/asterisco.png"))); // NOI18N
        astApellidoProf1Act.setToolTipText("Espacio requerido");
        panelManejoExpediente2.add(astApellidoProf1Act, new org.netbeans.lib.awtextra.AbsoluteConstraints(170, 570, -1, -1));

        apellido2ProfAct.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        apellido2ProfAct.setText("Segundo Apellido:");
        panelManejoExpediente2.add(apellido2ProfAct, new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 600, -1, -1));

        fechaNacProfAct.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        fechaNacProfAct.setText("Fecha de Nacimiento:");
        panelManejoExpediente2.add(fechaNacProfAct, new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 630, 160, -1));

        astFechaNacProfAct.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Img/asterisco.png"))); // NOI18N
        astFechaNacProfAct.setToolTipText("Espacio requerido");
        panelManejoExpediente2.add(astFechaNacProfAct, new org.netbeans.lib.awtextra.AbsoluteConstraints(210, 630, -1, -1));

        campoFechaNacProfAct.setToolTipText("");
        campoFechaNacProfAct.setDateFormatString("dd-MM-yyyy");
        campoFechaNacProfAct.setEnabled(false);
        campoFechaNacProfAct.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        campoFechaNacProfAct.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseReleased(java.awt.event.MouseEvent evt) {
                campoFechaNacProfActMouseReleased(evt);
            }
        });
        campoFechaNacProfAct.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                campoFechaNacProfActKeyTyped(evt);
            }
        });
        panelManejoExpediente2.add(campoFechaNacProfAct, new org.netbeans.lib.awtextra.AbsoluteConstraints(250, 630, 205, 23));

        campoApellido2ProfAct.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        campoApellido2ProfAct.setEnabled(false);
        campoApellido2ProfAct.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                campoApellido2ProfActKeyTyped(evt);
            }
        });
        panelManejoExpediente2.add(campoApellido2ProfAct, new org.netbeans.lib.awtextra.AbsoluteConstraints(250, 600, 205, -1));

        campoApellido1ProfAct.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        campoApellido1ProfAct.setEnabled(false);
        campoApellido1ProfAct.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                campoApellido1ProfActActionPerformed(evt);
            }
        });
        campoApellido1ProfAct.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                campoApellido1ProfActKeyTyped(evt);
            }
        });
        panelManejoExpediente2.add(campoApellido1ProfAct, new org.netbeans.lib.awtextra.AbsoluteConstraints(250, 570, 205, -1));

        campoNombreProfAct.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        campoNombreProfAct.setCursor(new java.awt.Cursor(java.awt.Cursor.TEXT_CURSOR));
        campoNombreProfAct.setEnabled(false);
        campoNombreProfAct.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                campoNombreProfActKeyReleased(evt);
            }
            public void keyTyped(java.awt.event.KeyEvent evt) {
                campoNombreProfActKeyTyped(evt);
            }
        });
        panelManejoExpediente2.add(campoNombreProfAct, new org.netbeans.lib.awtextra.AbsoluteConstraints(250, 540, 205, -1));

        campoCedulaProfAct.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        campoCedulaProfAct.setEnabled(false);
        campoCedulaProfAct.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                campoCedulaProfActKeyTyped(evt);
            }
        });
        panelManejoExpediente2.add(campoCedulaProfAct, new org.netbeans.lib.awtextra.AbsoluteConstraints(250, 510, 205, -1));

        InfoProfAct.setFont(new java.awt.Font("Calibri", 1, 16)); // NOI18N
        InfoProfAct.setText("Información del profesor a actualizar:");
        panelManejoExpediente2.add(InfoProfAct, new org.netbeans.lib.awtextra.AbsoluteConstraints(380, 450, -1, -1));

        correoProf1Act.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        correoProf1Act.setText("Correo electrónico 1:");
        panelManejoExpediente2.add(correoProf1Act, new org.netbeans.lib.awtextra.AbsoluteConstraints(580, 510, 150, -1));

        astCorreoAct.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Img/asterisco.png"))); // NOI18N
        astCorreoAct.setToolTipText("Espacio requerido");
        panelManejoExpediente2.add(astCorreoAct, new org.netbeans.lib.awtextra.AbsoluteConstraints(700, 510, -1, -1));

        campoEmailProf1Act.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        campoEmailProf1Act.setEnabled(false);
        campoEmailProf1Act.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                campoEmailProf1ActKeyTyped(evt);
            }
        });
        panelManejoExpediente2.add(campoEmailProf1Act, new org.netbeans.lib.awtextra.AbsoluteConstraints(740, 510, 205, -1));

        campoEmailProf2Act.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        campoEmailProf2Act.setEnabled(false);
        campoEmailProf2Act.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                campoEmailProf2ActKeyTyped(evt);
            }
        });
        panelManejoExpediente2.add(campoEmailProf2Act, new org.netbeans.lib.awtextra.AbsoluteConstraints(740, 540, 205, -1));

        correoProf2Act.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        correoProf2Act.setText("Correo electrónico 2:");
        panelManejoExpediente2.add(correoProf2Act, new org.netbeans.lib.awtextra.AbsoluteConstraints(580, 540, -1, -1));

        tel1ProfAct.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        tel1ProfAct.setText("Teléfono 1:");
        panelManejoExpediente2.add(tel1ProfAct, new org.netbeans.lib.awtextra.AbsoluteConstraints(580, 570, -1, -1));

        tel2ProfAct.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        tel2ProfAct.setText("Teléfono 2:");
        panelManejoExpediente2.add(tel2ProfAct, new org.netbeans.lib.awtextra.AbsoluteConstraints(580, 600, -1, -1));

        astTel1ProfAct.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Img/asterisco.png"))); // NOI18N
        astTel1ProfAct.setToolTipText("Espacio requerido");
        panelManejoExpediente2.add(astTel1ProfAct, new org.netbeans.lib.awtextra.AbsoluteConstraints(650, 570, -1, -1));

        estadoProfAct.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        estadoProfAct.setText("Estado del profesor:");
        panelManejoExpediente2.add(estadoProfAct, new org.netbeans.lib.awtextra.AbsoluteConstraints(580, 640, -1, -1));

        astEstadoProfAct.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Img/asterisco.png"))); // NOI18N
        astEstadoProfAct.setToolTipText("Espacio requerido");
        panelManejoExpediente2.add(astEstadoProfAct, new org.netbeans.lib.awtextra.AbsoluteConstraints(710, 640, 10, -1));

        campoTel2ProfAct.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        campoTel2ProfAct.setEnabled(false);
        campoTel2ProfAct.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                campoTel2ProfActKeyTyped(evt);
            }
        });
        panelManejoExpediente2.add(campoTel2ProfAct, new org.netbeans.lib.awtextra.AbsoluteConstraints(740, 600, 205, -1));

        campoTel1ProfAct.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        campoTel1ProfAct.setEnabled(false);
        campoTel1ProfAct.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                campoTel1ProfActKeyTyped(evt);
            }
        });
        panelManejoExpediente2.add(campoTel1ProfAct, new org.netbeans.lib.awtextra.AbsoluteConstraints(740, 570, 205, -1));

        estadoActivoProfAct.setText("Activo");
        estadoActivoProfAct.setEnabled(false);
        estadoActivoProfAct.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                estadoActivoProfActMouseClicked(evt);
            }
        });
        panelManejoExpediente2.add(estadoActivoProfAct, new org.netbeans.lib.awtextra.AbsoluteConstraints(740, 640, -1, 20));

        estadoInactivoProfAct.setText("Inactivo");
        estadoInactivoProfAct.setEnabled(false);
        estadoInactivoProfAct.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                estadoInactivoProfActMouseClicked(evt);
            }
        });
        panelManejoExpediente2.add(estadoInactivoProfAct, new org.netbeans.lib.awtextra.AbsoluteConstraints(850, 640, -1, 20));

        javax.swing.GroupLayout panelActualizarExpediente2Layout = new javax.swing.GroupLayout(panelActualizarExpediente2);
        panelActualizarExpediente2.setLayout(panelActualizarExpediente2Layout);
        panelActualizarExpediente2Layout.setHorizontalGroup(
            panelActualizarExpediente2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelActualizarExpediente2Layout.createSequentialGroup()
                .addGap(102, 102, 102)
                .addComponent(panelManejoExpediente2, javax.swing.GroupLayout.PREFERRED_SIZE, 1015, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(103, Short.MAX_VALUE))
        );
        panelActualizarExpediente2Layout.setVerticalGroup(
            panelActualizarExpediente2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelActualizarExpediente2Layout.createSequentialGroup()
                .addContainerGap(30, Short.MAX_VALUE)
                .addComponent(panelManejoExpediente2, javax.swing.GroupLayout.PREFERRED_SIZE, 818, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(34, 34, 34))
        );

        panelActualizarExpediente.setViewportView(panelActualizarExpediente2);

        panelOpcionesProfesor.addTab("Actualizar Expediente", panelActualizarExpediente);

        panelEliminarExpediente.setBackground(new java.awt.Color(255, 255, 255));

        panelManejoExpediente3.setBackground(new java.awt.Color(255, 255, 255));
        panelManejoExpediente3.setBorder(javax.swing.BorderFactory.createTitledBorder(new javax.swing.border.LineBorder(new java.awt.Color(204, 204, 204), 1, true), "Borrado de Expediente de Profesor", javax.swing.border.TitledBorder.LEFT, javax.swing.border.TitledBorder.TOP, new java.awt.Font("Calibri", 1, 18))); // NOI18N
        panelManejoExpediente3.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        busquedaProfEliminar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        busquedaProfEliminar.setText("Búsqueda:");
        panelManejoExpediente3.add(busquedaProfEliminar, new org.netbeans.lib.awtextra.AbsoluteConstraints(230, 320, -1, -1));

        campoBusquedaProfEliminar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        campoBusquedaProfEliminar.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                campoBusquedaProfEliminarKeyReleased(evt);
            }
        });
        panelManejoExpediente3.add(campoBusquedaProfEliminar, new org.netbeans.lib.awtextra.AbsoluteConstraints(330, 310, 460, 30));

        scrollProfesoresEliminar.setBackground(new java.awt.Color(0, 153, 204));
        scrollProfesoresEliminar.setBorder(javax.swing.BorderFactory.createTitledBorder(new javax.swing.border.LineBorder(new java.awt.Color(153, 153, 153), 1, true), "Seleccione el profesor registrado a eliminar:", javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.TOP, new java.awt.Font("Calibri", 1, 18), java.awt.Color.white)); // NOI18N

        tablaProfesoresEliminar.setAutoCreateRowSorter(true);
        tablaProfesoresEliminar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        tablaProfesoresEliminar.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Estado", "Cédula del profesor", "Profesor", "Fecha de nacimiento del estudiante", "Correo #1", "Correo #2", "Teléfono #1", "Teléfono #2"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false, false, false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tablaProfesoresEliminar.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
        tablaProfesoresEliminar.setGridColor(new java.awt.Color(0, 204, 204));
        tablaProfesoresEliminar.getTableHeader().setResizingAllowed(false);
        tablaProfesoresEliminar.getTableHeader().setReorderingAllowed(false);
        scrollProfesoresEliminar.setViewportView(tablaProfesoresEliminar);

        panelManejoExpediente3.add(scrollProfesoresEliminar, new org.netbeans.lib.awtextra.AbsoluteConstraints(160, 60, 690, 210));

        javax.swing.GroupLayout panelEliminarExpedienteLayout = new javax.swing.GroupLayout(panelEliminarExpediente);
        panelEliminarExpediente.setLayout(panelEliminarExpedienteLayout);
        panelEliminarExpedienteLayout.setHorizontalGroup(
            panelEliminarExpedienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelEliminarExpedienteLayout.createSequentialGroup()
                .addGap(104, 104, 104)
                .addComponent(panelManejoExpediente3, javax.swing.GroupLayout.PREFERRED_SIZE, 1013, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(107, Short.MAX_VALUE))
        );
        panelEliminarExpedienteLayout.setVerticalGroup(
            panelEliminarExpedienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelEliminarExpedienteLayout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(panelManejoExpediente3, javax.swing.GroupLayout.PREFERRED_SIZE, 394, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(40, 40, 40))
        );

        panelOpcionesProfesor.addTab("Eliminar Expediente", panelEliminarExpediente);

        panelMostrarExpediente.setBackground(new java.awt.Color(255, 255, 255));

        panelManejoExpediente4.setBackground(new java.awt.Color(255, 255, 255));
        panelManejoExpediente4.setBorder(javax.swing.BorderFactory.createTitledBorder(new javax.swing.border.LineBorder(new java.awt.Color(204, 204, 204), 1, true), "Lista de Expedientes de Profesores", javax.swing.border.TitledBorder.LEFT, javax.swing.border.TitledBorder.TOP, new java.awt.Font("Calibri", 1, 18))); // NOI18N
        panelManejoExpediente4.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        busquedaProfMostrar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        busquedaProfMostrar.setText("Búsqueda:");
        panelManejoExpediente4.add(busquedaProfMostrar, new org.netbeans.lib.awtextra.AbsoluteConstraints(230, 320, -1, -1));

        campoBusquedaProfMostrar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        campoBusquedaProfMostrar.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                campoBusquedaProfMostrarKeyReleased(evt);
            }
        });
        panelManejoExpediente4.add(campoBusquedaProfMostrar, new org.netbeans.lib.awtextra.AbsoluteConstraints(330, 310, 460, 30));

        scrollProfesoresMostrar.setBackground(new java.awt.Color(0, 153, 204));
        scrollProfesoresMostrar.setBorder(javax.swing.BorderFactory.createTitledBorder(new javax.swing.border.LineBorder(new java.awt.Color(153, 153, 153), 1, true), "Profesores registrados:", javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.TOP, new java.awt.Font("Calibri", 1, 18), java.awt.Color.white)); // NOI18N

        tablaProfesoresMostrar.setAutoCreateRowSorter(true);
        tablaProfesoresMostrar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        tablaProfesoresMostrar.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Estado", "Cédula del profesor", "Profesor", "Fecha de nacimiento del estudiante", "Correo #1", "Correo #2", "Teléfono #1", "Teléfono #2"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false, false, false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tablaProfesoresMostrar.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
        tablaProfesoresMostrar.setGridColor(new java.awt.Color(0, 204, 204));
        tablaProfesoresMostrar.getTableHeader().setResizingAllowed(false);
        tablaProfesoresMostrar.getTableHeader().setReorderingAllowed(false);
        scrollProfesoresMostrar.setViewportView(tablaProfesoresMostrar);

        panelManejoExpediente4.add(scrollProfesoresMostrar, new org.netbeans.lib.awtextra.AbsoluteConstraints(160, 60, 690, 210));

        javax.swing.GroupLayout panelMostrarExpedienteLayout = new javax.swing.GroupLayout(panelMostrarExpediente);
        panelMostrarExpediente.setLayout(panelMostrarExpedienteLayout);
        panelMostrarExpedienteLayout.setHorizontalGroup(
            panelMostrarExpedienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelMostrarExpedienteLayout.createSequentialGroup()
                .addGap(104, 104, 104)
                .addComponent(panelManejoExpediente4, javax.swing.GroupLayout.PREFERRED_SIZE, 1013, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(107, Short.MAX_VALUE))
        );
        panelMostrarExpedienteLayout.setVerticalGroup(
            panelMostrarExpedienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelMostrarExpedienteLayout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(panelManejoExpediente4, javax.swing.GroupLayout.PREFERRED_SIZE, 394, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(40, 40, 40))
        );

        panelOpcionesProfesor.addTab("Mostrar Expediente", panelMostrarExpediente);

        panelAsignacionCursos2.setBackground(new java.awt.Color(255, 255, 255));

        panelManejoAsignacion.setBackground(new java.awt.Color(255, 255, 255));
        panelManejoAsignacion.setBorder(javax.swing.BorderFactory.createTitledBorder(new javax.swing.border.LineBorder(new java.awt.Color(204, 204, 204), 1, true), "Área de Asignación de cursos que podrá impartir un profesor", javax.swing.border.TitledBorder.LEFT, javax.swing.border.TitledBorder.TOP, new java.awt.Font("Calibri", 1, 18))); // NOI18N
        panelManejoAsignacion.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        busquedaProfAsignar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        busquedaProfAsignar.setText("Búsqueda:");
        panelManejoAsignacion.add(busquedaProfAsignar, new org.netbeans.lib.awtextra.AbsoluteConstraints(50, 340, -1, -1));

        campoBusquedaProfAsignar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        campoBusquedaProfAsignar.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                campoBusquedaProfAsignarKeyReleased(evt);
            }
        });
        panelManejoAsignacion.add(campoBusquedaProfAsignar, new org.netbeans.lib.awtextra.AbsoluteConstraints(130, 330, 340, 30));

        scrollProfesoresAsignar.setBackground(new java.awt.Color(0, 153, 204));
        scrollProfesoresAsignar.setBorder(javax.swing.BorderFactory.createTitledBorder(new javax.swing.border.LineBorder(new java.awt.Color(153, 153, 153), 1, true), "Profesores registrados:", javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.TOP, new java.awt.Font("Calibri", 1, 18), java.awt.Color.white)); // NOI18N

        tablaProfesoresAsignar.setAutoCreateRowSorter(true);
        tablaProfesoresAsignar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        tablaProfesoresAsignar.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Cédula", "Profesor"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tablaProfesoresAsignar.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
        tablaProfesoresAsignar.setGridColor(new java.awt.Color(0, 204, 204));
        tablaProfesoresAsignar.getTableHeader().setResizingAllowed(false);
        tablaProfesoresAsignar.getTableHeader().setReorderingAllowed(false);
        scrollProfesoresAsignar.setViewportView(tablaProfesoresAsignar);

        panelManejoAsignacion.add(scrollProfesoresAsignar, new org.netbeans.lib.awtextra.AbsoluteConstraints(50, 100, 450, 210));

        campoBusquedaCursoAsignar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        campoBusquedaCursoAsignar.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                campoBusquedaCursoAsignarKeyReleased(evt);
            }
        });
        panelManejoAsignacion.add(campoBusquedaCursoAsignar, new org.netbeans.lib.awtextra.AbsoluteConstraints(600, 330, 340, 30));

        busquedaCursoAsignar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        busquedaCursoAsignar.setText("Búsqueda:");
        panelManejoAsignacion.add(busquedaCursoAsignar, new org.netbeans.lib.awtextra.AbsoluteConstraints(520, 340, -1, -1));

        scrollCursosAsignar.setBackground(new java.awt.Color(0, 153, 204));
        scrollCursosAsignar.setBorder(javax.swing.BorderFactory.createTitledBorder(new javax.swing.border.LineBorder(new java.awt.Color(153, 153, 153), 1, true), "Cursos registrados:", javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.TOP, new java.awt.Font("Calibri", 1, 18), java.awt.Color.white)); // NOI18N

        tablaCursosAsignar.setAutoCreateRowSorter(true);
        tablaCursosAsignar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        tablaCursosAsignar.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Código", "Curso"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tablaCursosAsignar.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
        tablaCursosAsignar.setGridColor(new java.awt.Color(0, 204, 204));
        tablaCursosAsignar.getTableHeader().setResizingAllowed(false);
        tablaCursosAsignar.getTableHeader().setReorderingAllowed(false);
        scrollCursosAsignar.setViewportView(tablaCursosAsignar);

        panelManejoAsignacion.add(scrollCursosAsignar, new org.netbeans.lib.awtextra.AbsoluteConstraints(520, 100, 450, 210));

        seleccionCurso.setFont(new java.awt.Font("Calibri", 1, 16)); // NOI18N
        seleccionCurso.setText("Paso 2: Seleccione el curso a asignar");
        panelManejoAsignacion.add(seleccionCurso, new org.netbeans.lib.awtextra.AbsoluteConstraints(580, 70, -1, -1));

        seleccioProfesor.setFont(new java.awt.Font("Calibri", 1, 16)); // NOI18N
        seleccioProfesor.setText("Paso 1: Seleccione el profesor");
        panelManejoAsignacion.add(seleccioProfesor, new org.netbeans.lib.awtextra.AbsoluteConstraints(170, 70, -1, -1));

        btnCancelarAsignacion.setText("Cancelar");
        btnCancelarAsignacion.setEnabled(false);
        btnCancelarAsignacion.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                btnCancelarAsignacionMouseClicked(evt);
            }
        });
        btnCancelarAsignacion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCancelarAsignacionActionPerformed(evt);
            }
        });
        panelManejoAsignacion.add(btnCancelarAsignacion, new org.netbeans.lib.awtextra.AbsoluteConstraints(530, 430, 130, 50));

        btnRegistrarAsignacion.setText("Registrar asignación");
        btnRegistrarAsignacion.setEnabled(false);
        btnRegistrarAsignacion.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                btnRegistrarAsignacionMouseClicked(evt);
            }
        });
        panelManejoAsignacion.add(btnRegistrarAsignacion, new org.netbeans.lib.awtextra.AbsoluteConstraints(360, 430, 130, 50));

        javax.swing.GroupLayout panelAsignacionCursos2Layout = new javax.swing.GroupLayout(panelAsignacionCursos2);
        panelAsignacionCursos2.setLayout(panelAsignacionCursos2Layout);
        panelAsignacionCursos2Layout.setHorizontalGroup(
            panelAsignacionCursos2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelAsignacionCursos2Layout.createSequentialGroup()
                .addGap(103, 103, 103)
                .addComponent(panelManejoAsignacion, javax.swing.GroupLayout.PREFERRED_SIZE, 1013, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(106, Short.MAX_VALUE))
        );
        panelAsignacionCursos2Layout.setVerticalGroup(
            panelAsignacionCursos2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelAsignacionCursos2Layout.createSequentialGroup()
                .addContainerGap(49, Short.MAX_VALUE)
                .addComponent(panelManejoAsignacion, javax.swing.GroupLayout.PREFERRED_SIZE, 525, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(34, 34, 34))
        );

        panelAsignacionCursos.setViewportView(panelAsignacionCursos2);

        panelOpcionesProfesor.addTab("Asignación de Cursos a Impartir", panelAsignacionCursos);

        panelDesasignacionCursos2.setBackground(new java.awt.Color(255, 255, 255));

        panelManejoDesasignacion.setBackground(new java.awt.Color(255, 255, 255));
        panelManejoDesasignacion.setBorder(javax.swing.BorderFactory.createTitledBorder(new javax.swing.border.LineBorder(new java.awt.Color(204, 204, 204), 1, true), "Área de Desasignación de cursos que imparte un profesor", javax.swing.border.TitledBorder.LEFT, javax.swing.border.TitledBorder.TOP, new java.awt.Font("Calibri", 1, 18))); // NOI18N
        panelManejoDesasignacion.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        busquedaProfDesasignar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        busquedaProfDesasignar.setText("Búsqueda:");
        panelManejoDesasignacion.add(busquedaProfDesasignar, new org.netbeans.lib.awtextra.AbsoluteConstraints(60, 340, -1, -1));

        campoBusquedaProfDesasignar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        campoBusquedaProfDesasignar.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                campoBusquedaProfDesasignarKeyReleased(evt);
            }
        });
        panelManejoDesasignacion.add(campoBusquedaProfDesasignar, new org.netbeans.lib.awtextra.AbsoluteConstraints(150, 330, 340, 30));

        scrollProfesoresDesasignar.setBackground(new java.awt.Color(0, 153, 204));
        scrollProfesoresDesasignar.setBorder(javax.swing.BorderFactory.createTitledBorder(new javax.swing.border.LineBorder(new java.awt.Color(153, 153, 153), 1, true), "Profesores registrados:", javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.TOP, new java.awt.Font("Calibri", 1, 18), java.awt.Color.white)); // NOI18N

        tablaProfesoresDesasignar.setAutoCreateRowSorter(true);
        tablaProfesoresDesasignar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        tablaProfesoresDesasignar.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Cédula", "Profesor"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tablaProfesoresDesasignar.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
        tablaProfesoresDesasignar.setGridColor(new java.awt.Color(0, 204, 204));
        tablaProfesoresDesasignar.getTableHeader().setResizingAllowed(false);
        tablaProfesoresDesasignar.getTableHeader().setReorderingAllowed(false);
        scrollProfesoresDesasignar.setViewportView(tablaProfesoresDesasignar);

        panelManejoDesasignacion.add(scrollProfesoresDesasignar, new org.netbeans.lib.awtextra.AbsoluteConstraints(50, 100, 450, 210));

        campoBusquedaCursoDesasignar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        campoBusquedaCursoDesasignar.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                campoBusquedaCursoDesasignarKeyReleased(evt);
            }
        });
        panelManejoDesasignacion.add(campoBusquedaCursoDesasignar, new org.netbeans.lib.awtextra.AbsoluteConstraints(620, 330, 340, 30));

        busquedaCursoDesasignar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        busquedaCursoDesasignar.setText("Búsqueda:");
        panelManejoDesasignacion.add(busquedaCursoDesasignar, new org.netbeans.lib.awtextra.AbsoluteConstraints(530, 340, -1, -1));

        scrollCursosDesasignar.setBackground(new java.awt.Color(0, 153, 204));
        scrollCursosDesasignar.setBorder(javax.swing.BorderFactory.createTitledBorder(new javax.swing.border.LineBorder(new java.awt.Color(153, 153, 153), 1, true), "Cursos registrados:", javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.TOP, new java.awt.Font("Calibri", 1, 18), java.awt.Color.white)); // NOI18N

        tablaCursosDesasignar.setAutoCreateRowSorter(true);
        tablaCursosDesasignar.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        tablaCursosDesasignar.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Código", "Curso"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tablaCursosDesasignar.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
        tablaCursosDesasignar.setGridColor(new java.awt.Color(0, 204, 204));
        tablaCursosDesasignar.getTableHeader().setResizingAllowed(false);
        tablaCursosDesasignar.getTableHeader().setReorderingAllowed(false);
        scrollCursosDesasignar.setViewportView(tablaCursosDesasignar);

        panelManejoDesasignacion.add(scrollCursosDesasignar, new org.netbeans.lib.awtextra.AbsoluteConstraints(520, 100, 450, 210));

        seleccionCursoDesasignacion.setFont(new java.awt.Font("Calibri", 1, 16)); // NOI18N
        seleccionCursoDesasignacion.setText("Paso 2: Seleccione el curso a desasignar");
        panelManejoDesasignacion.add(seleccionCursoDesasignacion, new org.netbeans.lib.awtextra.AbsoluteConstraints(560, 70, -1, -1));

        seleccioProfesorDesasignacion.setFont(new java.awt.Font("Calibri", 1, 16)); // NOI18N
        seleccioProfesorDesasignacion.setText("Paso 1: Seleccione el profesor");
        panelManejoDesasignacion.add(seleccioProfesorDesasignacion, new org.netbeans.lib.awtextra.AbsoluteConstraints(100, 70, -1, -1));

        btnCancelarDesasignacion.setText("Cancelar");
        btnCancelarDesasignacion.setEnabled(false);
        btnCancelarDesasignacion.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                btnCancelarDesasignacionMouseClicked(evt);
            }
        });
        btnCancelarDesasignacion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCancelarDesasignacionActionPerformed(evt);
            }
        });
        panelManejoDesasignacion.add(btnCancelarDesasignacion, new org.netbeans.lib.awtextra.AbsoluteConstraints(530, 430, 140, 50));

        btnRealizarDesasignacion.setText("Realizar desasignación");
        btnRealizarDesasignacion.setEnabled(false);
        btnRealizarDesasignacion.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                btnRealizarDesasignacionMouseClicked(evt);
            }
        });
        panelManejoDesasignacion.add(btnRealizarDesasignacion, new org.netbeans.lib.awtextra.AbsoluteConstraints(349, 430, -1, 50));

        javax.swing.GroupLayout panelDesasignacionCursos2Layout = new javax.swing.GroupLayout(panelDesasignacionCursos2);
        panelDesasignacionCursos2.setLayout(panelDesasignacionCursos2Layout);
        panelDesasignacionCursos2Layout.setHorizontalGroup(
            panelDesasignacionCursos2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelDesasignacionCursos2Layout.createSequentialGroup()
                .addGap(103, 103, 103)
                .addComponent(panelManejoDesasignacion, javax.swing.GroupLayout.PREFERRED_SIZE, 1013, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(106, Short.MAX_VALUE))
        );
        panelDesasignacionCursos2Layout.setVerticalGroup(
            panelDesasignacionCursos2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelDesasignacionCursos2Layout.createSequentialGroup()
                .addContainerGap(49, Short.MAX_VALUE)
                .addComponent(panelManejoDesasignacion, javax.swing.GroupLayout.PREFERRED_SIZE, 525, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(34, 34, 34))
        );

        panelDesasignacionCursos.setViewportView(panelDesasignacionCursos2);

        panelOpcionesProfesor.addTab("Desasignación de Cursos a Impartir", panelDesasignacionCursos);

        panelMostrarAsignacionesCursos.setBackground(new java.awt.Color(255, 255, 255));

        panelManejoMostrarAsignaciones.setBackground(new java.awt.Color(255, 255, 255));
        panelManejoMostrarAsignaciones.setBorder(javax.swing.BorderFactory.createTitledBorder(new javax.swing.border.LineBorder(new java.awt.Color(204, 204, 204), 1, true), "Área de Búsqueda de Asignaciones Realizadas", javax.swing.border.TitledBorder.LEFT, javax.swing.border.TitledBorder.TOP, new java.awt.Font("Calibri", 1, 18))); // NOI18N
        panelManejoMostrarAsignaciones.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        scrollMostrarAsignaciones.setBackground(new java.awt.Color(0, 153, 204));
        scrollMostrarAsignaciones.setBorder(javax.swing.BorderFactory.createTitledBorder(new javax.swing.border.LineBorder(new java.awt.Color(153, 153, 153), 1, true), "Profesores con Cursos Asignados:", javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.TOP, new java.awt.Font("Calibri", 1, 18), java.awt.Color.white)); // NOI18N

        tablaMostrarAsignaciones.setAutoCreateRowSorter(true);
        tablaMostrarAsignaciones.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        tablaMostrarAsignaciones.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Profesor", "Curso asignado"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tablaMostrarAsignaciones.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
        tablaMostrarAsignaciones.setGridColor(new java.awt.Color(0, 204, 204));
        tablaMostrarAsignaciones.getTableHeader().setResizingAllowed(false);
        tablaMostrarAsignaciones.getTableHeader().setReorderingAllowed(false);
        scrollMostrarAsignaciones.setViewportView(tablaMostrarAsignaciones);

        panelManejoMostrarAsignaciones.add(scrollMostrarAsignaciones, new org.netbeans.lib.awtextra.AbsoluteConstraints(140, 100, 730, 210));

        campoBusqueda.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        campoBusqueda.setEnabled(false);
        campoBusqueda.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                campoBusquedaKeyReleased(evt);
            }
        });
        panelManejoMostrarAsignaciones.add(campoBusqueda, new org.netbeans.lib.awtextra.AbsoluteConstraints(300, 330, 410, 30));

        asignacionMostrar.setFont(new java.awt.Font("Calibri", 1, 16)); // NOI18N
        asignacionMostrar.setText("Búsqueda de Cursos Asignados a Profesores");
        panelManejoMostrarAsignaciones.add(asignacionMostrar, new org.netbeans.lib.awtextra.AbsoluteConstraints(350, 70, -1, -1));

        btnBusqueda.setText("Búsqueda:");
        btnBusqueda.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                btnBusquedaMouseClicked(evt);
            }
        });
        panelManejoMostrarAsignaciones.add(btnBusqueda, new org.netbeans.lib.awtextra.AbsoluteConstraints(170, 330, 90, 30));

        btnCancelarBusqueda.setText("Cancelar");
        btnCancelarBusqueda.setEnabled(false);
        btnCancelarBusqueda.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                btnCancelarBusquedaMouseClicked(evt);
            }
        });
        panelManejoMostrarAsignaciones.add(btnCancelarBusqueda, new org.netbeans.lib.awtextra.AbsoluteConstraints(750, 330, 90, 30));

        javax.swing.GroupLayout panelMostrarAsignacionesCursosLayout = new javax.swing.GroupLayout(panelMostrarAsignacionesCursos);
        panelMostrarAsignacionesCursos.setLayout(panelMostrarAsignacionesCursosLayout);
        panelMostrarAsignacionesCursosLayout.setHorizontalGroup(
            panelMostrarAsignacionesCursosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelMostrarAsignacionesCursosLayout.createSequentialGroup()
                .addGap(102, 102, 102)
                .addComponent(panelManejoMostrarAsignaciones, javax.swing.GroupLayout.PREFERRED_SIZE, 1013, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(109, Short.MAX_VALUE))
        );
        panelMostrarAsignacionesCursosLayout.setVerticalGroup(
            panelMostrarAsignacionesCursosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelMostrarAsignacionesCursosLayout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(panelManejoMostrarAsignaciones, javax.swing.GroupLayout.PREFERRED_SIZE, 400, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(34, 34, 34))
        );

        panelOpcionesProfesor.addTab("Mostrar Asignaciones Efectuadas", panelMostrarAsignacionesCursos);

        javax.swing.GroupLayout panelImagenProfesor2Layout = new javax.swing.GroupLayout(panelImagenProfesor2);
        panelImagenProfesor2.setLayout(panelImagenProfesor2Layout);
        panelImagenProfesor2Layout.setHorizontalGroup(
            panelImagenProfesor2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelImagenProfesor2Layout.createSequentialGroup()
                .addContainerGap(36, Short.MAX_VALUE)
                .addComponent(panelOpcionesProfesor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(38, 38, 38))
        );
        panelImagenProfesor2Layout.setVerticalGroup(
            panelImagenProfesor2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelImagenProfesor2Layout.createSequentialGroup()
                .addGap(32, 32, 32)
                .addComponent(panelOpcionesProfesor, javax.swing.GroupLayout.PREFERRED_SIZE, 512, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(42, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(panelImagenProfesor, javax.swing.GroupLayout.DEFAULT_SIZE, 1306, Short.MAX_VALUE)
            .addComponent(panelImagenProfesor2, javax.swing.GroupLayout.DEFAULT_SIZE, 1306, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(panelImagenProfesor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(panelImagenProfesor2, javax.swing.GroupLayout.DEFAULT_SIZE, 586, Short.MAX_VALUE))
        );

        setSize(new java.awt.Dimension(1316, 682));
        setLocationRelativeTo(null);
    }// </editor-fold>//GEN-END:initComponents

    private void jLabel6MouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel6MouseEntered
        // TODO add your handling code here:
        Font font = new Font("Tahoma", Font.PLAIN, 11);
        Map attributes = font.getAttributes();
        attributes.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);
        jLabel6.setFont(font.deriveFont(attributes));
        jLabel6.setForeground(new Color(0,0,204));
    }//GEN-LAST:event_jLabel6MouseEntered

    private void jLabel6MouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel6MouseExited
        // TODO add your handling code here:
        jLabel6.setFont(new Font("Tahoma", Font.PLAIN, 11));
        jLabel6.setForeground(new Color(0,0,0));
    }//GEN-LAST:event_jLabel6MouseExited

    private void jLabel6MousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel6MousePressed
        // TODO add your handling code here:
        VentanaPrincipal ob= new VentanaPrincipal();
        ob.setVisible(true);
        dispose();
    }//GEN-LAST:event_jLabel6MousePressed

    private void campoBusquedaProfMostrarKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_campoBusquedaProfMostrarKeyReleased
        // TODO add your handling code here:
        mostrarEstudianteSorter();
    }//GEN-LAST:event_campoBusquedaProfMostrarKeyReleased

    private void campoBusquedaProfEliminarKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_campoBusquedaProfEliminarKeyReleased
        // TODO add your handling code here:
        eliminarEstudianteSorter();
    }//GEN-LAST:event_campoBusquedaProfEliminarKeyReleased

    private void campoNombreProfAgregarKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_campoNombreProfAgregarKeyReleased
        // TODO add your handling code here:
    }//GEN-LAST:event_campoNombreProfAgregarKeyReleased

    private void campoNombreProfAgregarKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_campoNombreProfAgregarKeyTyped
        // TODO add your handling code here:
        char c = evt.getKeyChar();
        if(!(Character.isLetter(c)||Character.isSpaceChar(c) ||(c == KeyEvent.VK_BACK_SPACE)||(c== KeyEvent.VK_DELETE))){
            getToolkit().beep();
            evt.consume();
        }
    }//GEN-LAST:event_campoNombreProfAgregarKeyTyped

    private void campoApellido1ProfAgregarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_campoApellido1ProfAgregarActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_campoApellido1ProfAgregarActionPerformed

    private void campoApellido1ProfAgregarKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_campoApellido1ProfAgregarKeyTyped
        // TODO add your handling code here:
        char c = evt.getKeyChar();
        if(!(Character.isLetter(c)||isSpecialSeparator(c)||(c == KeyEvent.VK_BACK_SPACE)||(c== KeyEvent.VK_DELETE))){
            getToolkit().beep();
            evt.consume();
        }
    }//GEN-LAST:event_campoApellido1ProfAgregarKeyTyped

    private void campoApellido2ProfAgregarKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_campoApellido2ProfAgregarKeyTyped
        // TODO add your handling code here:
        char c = evt.getKeyChar();
        if(!(Character.isLetter(c)||isSpecialSeparator(c)||(c == KeyEvent.VK_BACK_SPACE)||(c== KeyEvent.VK_DELETE))){
            getToolkit().beep();
            evt.consume();
        }
    }//GEN-LAST:event_campoApellido2ProfAgregarKeyTyped

    private void campoCedulaProfAgregarKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_campoCedulaProfAgregarKeyTyped
        // TODO add your handling code here:
        char c = evt.getKeyChar();
        if(!(Character.isLetter(c) ||Character.isDigit(c)||(c == KeyEvent.VK_BACK_SPACE)||(c== KeyEvent.VK_DELETE))){
            getToolkit().beep();
            evt.consume();
        }
    }//GEN-LAST:event_campoCedulaProfAgregarKeyTyped

    private void campoEmailProf1AgregarKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_campoEmailProf1AgregarKeyTyped
        // TODO add your handling code here:
        char c = evt.getKeyChar();
        if(!(!Character.isSpaceChar(c) ||(c == KeyEvent.VK_BACK_SPACE)||(c== KeyEvent.VK_DELETE))){
            getToolkit().beep();
            evt.consume();
        }
    }//GEN-LAST:event_campoEmailProf1AgregarKeyTyped

    private void btnNuevoProfAgregarMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_btnNuevoProfAgregarMouseClicked
        // TODO add your handling code here:
        iniciarNuevoExpediente();
    }//GEN-LAST:event_btnNuevoProfAgregarMouseClicked

    private void btnCancelarProfAgregarMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_btnCancelarProfAgregarMouseClicked
        // TODO add your handling code here:
        cancelarOCrearExpediente();
    }//GEN-LAST:event_btnCancelarProfAgregarMouseClicked

    private void btnCancelarProfAgregarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelarProfAgregarActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_btnCancelarProfAgregarActionPerformed

    private void btnCrearProfAgregarMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_btnCrearProfAgregarMouseClicked
        // TODO add your handling code here:
        puedeIngresarExpediente();
    }//GEN-LAST:event_btnCrearProfAgregarMouseClicked

    private void campoTel1ProfAgregarKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_campoTel1ProfAgregarKeyTyped
        // TODO add your handling code here:
        char c = evt.getKeyChar();
        if(!(Character.isDigit(c)||(c == KeyEvent.VK_BACK_SPACE)||(c== KeyEvent.VK_DELETE))){
            getToolkit().beep();
            evt.consume();
        }
    }//GEN-LAST:event_campoTel1ProfAgregarKeyTyped

    private void campoTel2ProfAgregarKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_campoTel2ProfAgregarKeyTyped
        // TODO add your handling code here:
        char c = evt.getKeyChar();
        if(!(Character.isDigit(c)||(c == KeyEvent.VK_BACK_SPACE)||(c== KeyEvent.VK_DELETE))){
            getToolkit().beep();
            evt.consume();
        }
    }//GEN-LAST:event_campoTel2ProfAgregarKeyTyped

    private void campoEmailProf2AgregarKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_campoEmailProf2AgregarKeyTyped
        // TODO add your handling code here:
        char c = evt.getKeyChar();
        if(!(!Character.isSpaceChar(c) ||(c == KeyEvent.VK_BACK_SPACE)||(c== KeyEvent.VK_DELETE))){
            getToolkit().beep();
            evt.consume();
        }
    }//GEN-LAST:event_campoEmailProf2AgregarKeyTyped

    private void estadoActivoProfAgregarMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_estadoActivoProfAgregarMouseClicked
        // TODO add your handling code here:
        actualizarControlesProfesoresAgregar();
        if(estadoActivoProfAgregar.isEnabled()){
            estadoInactivoProfAgregar.setSelected(false);
        }
    }//GEN-LAST:event_estadoActivoProfAgregarMouseClicked

    private void estadoInactivoProfAgregarMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_estadoInactivoProfAgregarMouseClicked
        // TODO add your handling code here:
        actualizarControlesProfesoresAgregar();
        if(estadoInactivoProfAgregar.isEnabled()){
            estadoActivoProfAgregar.setSelected(false);
        }
    }//GEN-LAST:event_estadoInactivoProfAgregarMouseClicked

    private void campoFechaNacProfAgregarMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_campoFechaNacProfAgregarMouseReleased
        // TODO add your handling code here:
    }//GEN-LAST:event_campoFechaNacProfAgregarMouseReleased

    private void campoFechaNacProfAgregarKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_campoFechaNacProfAgregarKeyTyped
        // TODO add your handling code here:

    }//GEN-LAST:event_campoFechaNacProfAgregarKeyTyped

    private void btnActualizarProfMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_btnActualizarProfMouseClicked
        // TODO add your handling code here:
        puedeActualizarExpediente();
    }//GEN-LAST:event_btnActualizarProfMouseClicked

    private void btnCancelarProfActMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_btnCancelarProfActMouseClicked
        // TODO add your handling code here:
        cancelarOActualizarExpediente(1);
    }//GEN-LAST:event_btnCancelarProfActMouseClicked

    private void btnCancelarProfActActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelarProfActActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_btnCancelarProfActActionPerformed

    private void campoBusquedaProfActualizarKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_campoBusquedaProfActualizarKeyReleased
        // TODO add your handling code here:
        actualizarProfesorSorter();
        deseleccionadoActualizar();
    }//GEN-LAST:event_campoBusquedaProfActualizarKeyReleased

    private void panelOpcionesProfesorStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_panelOpcionesProfesorStateChanged
        // TODO add your handling code here:
        Component comp = panelOpcionesProfesor.getSelectedComponent();
        if (comp.equals(panelCrearExpediente)){
            cancelarOCrearExpediente();
        }
        else{
            if (comp.equals(panelActualizarExpediente)){
                cancelarOActualizarExpediente(1);
                cargarProfesores(tablaProfesoresActualizar);
            }
            else{
                if(comp.equals(panelEliminarExpediente)){
                    limpiarPanelEliminarExpediente();
                    cargarProfesores(tablaProfesoresEliminar);
                }
                else{
                    if(comp.equals(panelMostrarExpediente)){
                        limpiarPanelMostrarExpediente();
                        cargarProfesores(tablaProfesoresMostrar);
                    }
                    else{
                        if(comp.equals(panelAsignacionCursos)){
                            limpiarPanelAsignacionCurso();
                            cargarProfesoresAsignacion(tablaProfesoresAsignar);
                        }
                        else{
                            if(comp.equals(panelDesasignacionCursos)){
                                limpiarPanelDesasignacionCurso();
                                cargarProfesoresDesasignacion(tablaProfesoresDesasignar);
                            }
                            else{
                                if(comp.equals(panelMostrarAsignacionesCursos)){
                                    limpiarPanelMostrarAsignacion();
                                    cargarAsignaciones();
                                }
                            }
                        }
                    }
                }
            }
        }
    }//GEN-LAST:event_panelOpcionesProfesorStateChanged

    private void campoFechaNacProfActMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_campoFechaNacProfActMouseReleased
        // TODO add your handling code here:
    }//GEN-LAST:event_campoFechaNacProfActMouseReleased

    private void campoFechaNacProfActKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_campoFechaNacProfActKeyTyped
        // TODO add your handling code here:
    }//GEN-LAST:event_campoFechaNacProfActKeyTyped

    private void campoApellido2ProfActKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_campoApellido2ProfActKeyTyped
        // TODO add your handling code here:
    }//GEN-LAST:event_campoApellido2ProfActKeyTyped

    private void campoApellido1ProfActActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_campoApellido1ProfActActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_campoApellido1ProfActActionPerformed

    private void campoApellido1ProfActKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_campoApellido1ProfActKeyTyped
        // TODO add your handling code here:
    }//GEN-LAST:event_campoApellido1ProfActKeyTyped

    private void campoNombreProfActKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_campoNombreProfActKeyReleased
        // TODO add your handling code here:
    }//GEN-LAST:event_campoNombreProfActKeyReleased

    private void campoNombreProfActKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_campoNombreProfActKeyTyped
        // TODO add your handling code here:
    }//GEN-LAST:event_campoNombreProfActKeyTyped

    private void campoCedulaProfActKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_campoCedulaProfActKeyTyped
        // TODO add your handling code here:
    }//GEN-LAST:event_campoCedulaProfActKeyTyped

    private void campoEmailProf1ActKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_campoEmailProf1ActKeyTyped
        // TODO add your handling code here:
    }//GEN-LAST:event_campoEmailProf1ActKeyTyped

    private void campoEmailProf2ActKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_campoEmailProf2ActKeyTyped
        // TODO add your handling code here:
    }//GEN-LAST:event_campoEmailProf2ActKeyTyped

    private void campoTel2ProfActKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_campoTel2ProfActKeyTyped
        // TODO add your handling code here:
    }//GEN-LAST:event_campoTel2ProfActKeyTyped

    private void campoTel1ProfActKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_campoTel1ProfActKeyTyped
        // TODO add your handling code here:
    }//GEN-LAST:event_campoTel1ProfActKeyTyped

    private void estadoActivoProfActMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_estadoActivoProfActMouseClicked
        // TODO add your handling code here:
    }//GEN-LAST:event_estadoActivoProfActMouseClicked

    private void estadoInactivoProfActMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_estadoInactivoProfActMouseClicked
        // TODO add your handling code here:
    }//GEN-LAST:event_estadoInactivoProfActMouseClicked

    private void campoBusquedaProfAsignarKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_campoBusquedaProfAsignarKeyReleased
        // TODO add your handling code here:
        asignarProfesorSorter();
        deshabilitarCancelarAsignacion();
    }//GEN-LAST:event_campoBusquedaProfAsignarKeyReleased

    private void campoBusquedaCursoAsignarKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_campoBusquedaCursoAsignarKeyReleased
        // TODO add your handling code here:
        asignarCursoSorter();
        deshabilitarCancelarAsignacion();
    }//GEN-LAST:event_campoBusquedaCursoAsignarKeyReleased

    private void btnCancelarAsignacionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelarAsignacionActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_btnCancelarAsignacionActionPerformed

    private void btnCancelarAsignacionMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_btnCancelarAsignacionMouseClicked
        // TODO add your handling code here:
        cancelarAsignacionCurso();
    }//GEN-LAST:event_btnCancelarAsignacionMouseClicked

    private void btnRegistrarAsignacionMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_btnRegistrarAsignacionMouseClicked
        // TODO add your handling code here:
        puedeAsignar();
    }//GEN-LAST:event_btnRegistrarAsignacionMouseClicked

    private void campoBusquedaProfDesasignarKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_campoBusquedaProfDesasignarKeyReleased
        // TODO add your handling code here:
        desasignarProfesorSorter();
        deshabilitarCancelarDesasignacion();
    }//GEN-LAST:event_campoBusquedaProfDesasignarKeyReleased

    private void campoBusquedaCursoDesasignarKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_campoBusquedaCursoDesasignarKeyReleased
        // TODO add your handling code here:
        desasignarCursoSorter();
        deshabilitarCancelarDesasignacion();
    }//GEN-LAST:event_campoBusquedaCursoDesasignarKeyReleased

    private void btnCancelarDesasignacionMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_btnCancelarDesasignacionMouseClicked
        // TODO add your handling code here:
        cancelarDesasignacionCurso();
    }//GEN-LAST:event_btnCancelarDesasignacionMouseClicked

    private void btnCancelarDesasignacionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelarDesasignacionActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_btnCancelarDesasignacionActionPerformed

    private void btnRealizarDesasignacionMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_btnRealizarDesasignacionMouseClicked
        // TODO add your handling code here:
         puedeDesasignar();
    }//GEN-LAST:event_btnRealizarDesasignacionMouseClicked

    private void campoBusquedaKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_campoBusquedaKeyReleased
        // TODO add your handling code here:
        buscarAsignacion();
    }//GEN-LAST:event_campoBusquedaKeyReleased

    private void btnBusquedaMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_btnBusquedaMouseClicked
        // TODO add your handling code here:
        popUpFormaBusqueda();
    }//GEN-LAST:event_btnBusquedaMouseClicked

    private void btnCancelarBusquedaMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_btnCancelarBusquedaMouseClicked
        // TODO add your handling code here:
        modoCancelar();
    }//GEN-LAST:event_btnCancelarBusquedaMouseClicked

    private void iniciarNuevoExpediente(){
        btnNuevoProfAgregar.setEnabled(false);
        btnCancelarProfAgregar.setEnabled(true);
        btnCrearProfAgregar.setEnabled(false);
        astNombreProfAgregar.setVisible(true);
        campoNombreProfAgregar.setEnabled(true);
        campoNombreProfAgregar.setBackground(Color.white);
        astApellido1ProfAgregar.setVisible(true);
        campoApellido1ProfAgregar.setEnabled(true);
        campoApellido1ProfAgregar.setBackground(Color.white);
        campoApellido2ProfAgregar.setEnabled(true);
        campoApellido2ProfAgregar.setBackground(Color.white);
        astCedulaProfAgregar.setVisible(true);
        campoCedulaProfAgregar.setEnabled(true);
        campoCedulaProfAgregar.setBackground(Color.white);
        campoCedulaProfAgregar.requestFocus();
        astFechaNacProfAgregar.setVisible(true);
        campoFechaNacProfAgregar.setEnabled(true);
        ((JTextField)campoFechaNacProfAgregar.getDateEditor().getUiComponent()).setBackground(Color.white);
        astCorreoProfAgregar.setVisible(true);
        campoEmailProf1Agregar.setEnabled(true);
        campoEmailProf1Agregar.setBackground(Color.white);
        campoEmailProf2Agregar.setEnabled(true);
        campoEmailProf2Agregar.setBackground(Color.white);
        astTel1ProfAgregar.setVisible(true);
        campoTel1ProfAgregar.setEnabled(true);
        campoTel1ProfAgregar.setBackground(Color.white);
        campoTel2ProfAgregar.setEnabled(true);
        campoTel2ProfAgregar.setBackground(Color.white);
        astEstadoProfAgregar.setVisible(true);
        estadoActivoProfAgregar.setEnabled(true);
        estadoInactivoProfAgregar.setEnabled(true);
    }
    
    private void cancelarOCrearExpediente(){
        btnNuevoProfAgregar.setEnabled(true);
        btnCancelarProfAgregar.setEnabled(false);
        btnCrearProfAgregar.setEnabled(false);
        astNombreProfAgregar.setVisible(false);
        campoNombreProfAgregar.setBackground(new Color(240,240,240));
        campoNombreProfAgregar.setToolTipText(null);        
        campoNombreProfAgregar.setEnabled(false);
        campoNombreProfAgregar.setText("");
        astApellido1ProfAgregar.setVisible(false);
        campoApellido1ProfAgregar.setBackground(new Color(240,240,240));
        campoApellido1ProfAgregar.setToolTipText(null);
        campoApellido1ProfAgregar.setEnabled(false);
        campoApellido1ProfAgregar.setText("");
        campoApellido2ProfAgregar.setBackground(new Color(240,240,240));
        campoApellido2ProfAgregar.setToolTipText(null);
        campoApellido2ProfAgregar.setEnabled(false);
        campoApellido2ProfAgregar.setText("");
        astCedulaProfAgregar.setVisible(false);
        campoCedulaProfAgregar.setBackground(new Color(240,240,240));
        campoCedulaProfAgregar.setToolTipText(null);
        campoCedulaProfAgregar.setEnabled(false);
        campoCedulaProfAgregar.setText("");
        astFechaNacProfAgregar.setVisible(false);
        campoFechaNacProfAgregar.setDate(null);
        campoFechaNacProfAgregar.setEnabled(false);
        astCorreoProfAgregar.setVisible(false);
        campoEmailProf1Agregar.setBackground(new Color(240,240,240));
        campoEmailProf1Agregar.setToolTipText(null);
        campoEmailProf1Agregar.setEnabled(false);
        campoEmailProf1Agregar.setText("");
        campoEmailProf2Agregar.setBackground(new Color(240,240,240));
        campoEmailProf2Agregar.setToolTipText(null);
        campoEmailProf2Agregar.setEnabled(false);
        campoEmailProf2Agregar.setText("");
        astTel1ProfAgregar.setVisible(false);
        campoTel1ProfAgregar.setBackground(new Color(240,240,240));
        campoTel1ProfAgregar.setToolTipText(null);
        campoTel1ProfAgregar.setEnabled(false);
        campoTel1ProfAgregar.setText("");
        campoTel2ProfAgregar.setBackground(new Color(240,240,240));
        campoTel2ProfAgregar.setToolTipText(null);
        campoTel2ProfAgregar.setEnabled(false);
        campoTel2ProfAgregar.setText("");
        astEstadoProfAgregar.setVisible(false);
        estadoActivoProfAgregar.setSelected(false);
        estadoActivoProfAgregar.setEnabled(false);
        estadoInactivoProfAgregar.setSelected(false);
        estadoInactivoProfAgregar.setEnabled(false);
    }
        
    private boolean isSpecialSeparator(Character c){
        if(c.equals('-')){
            return true;
        }
        else{
            return false;
        }
    }
    
    private boolean validarCorreo(String correo){
        Pattern pattern = Pattern.compile(patronEmail); //compila la ER en un patron/modelo
        Matcher matcher = pattern.matcher(correo); //trata de emparejar el correo escrito contra el patron generado
        return matcher.matches();
    }
        
    private void errorProfesorIngresado(){
        campoCedulaProfAgregar.setBackground(new Color(255,51,51));
        campoCedulaProfAgregar.setToolTipText("Revisar cédula de profesor");
    }
    
   private void ingresarExpediente(){
        int confirmado = JOptionPane.showOptionDialog(
            null,"Confirmar creación de expediente de profesor para "+campoCedulaProfAgregar.getText()+"-"+campoNombreProfAgregar.getText().replaceAll("\\s+$","")+" "+campoApellido1ProfAgregar.getText()+" "+campoApellido2ProfAgregar.getText(), "Confirmación requerida",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE,
            null,    // null para icono por defecto.
            new Object[] { "Correcto", "Cancelar"},   // null para YES, NO y CANCEL
            null);
                
        if(confirmado==0){
            Connection conexion=null;
            Statement sentencia=null;
            ResultSet resultado=null;
        
            try {
                Class.forName("org.postgresql.Driver");
            }catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            try{
                conexion = DriverManager.getConnection(cadenaConexion);
                sentencia = conexion.createStatement();
                String consultaSQL;
                    if(campoApellido2ProfAgregar.getText().equals("")){
                        if(campoTel2ProfAgregar.getText().equals("")){
                            if(campoEmailProf2Agregar.getText().equals("")){
                                consultaSQL = "insert into profesor (cedula, nombre, apellido1, apellido2, fecha_nac, activo, email1, email2, tel1, tel2) VALUES ('"+campoCedulaProfAgregar.getText()+"','"+campoNombreProfAgregar.getText()+"','"+campoApellido1ProfAgregar.getText()+"',NULL,'"+getFechaNac(obtenerFechaDatePicker(campoFechaNacProfAgregar))+"','"+estadoActivoProfAgregar.isSelected()+"','"+campoEmailProf1Agregar.getText()+"',NULL,"+campoTel1ProfAgregar.getText()+",NULL)";
                            }
                            else{
                                consultaSQL = "insert into profesor (cedula, nombre, apellido1, apellido2, fecha_nac, activo, email1, email2, tel1, tel2) VALUES ('"+campoCedulaProfAgregar.getText()+"','"+campoNombreProfAgregar.getText()+"','"+campoApellido1ProfAgregar.getText()+"',NULL,'"+getFechaNac(obtenerFechaDatePicker(campoFechaNacProfAgregar))+"','"+estadoActivoProfAgregar.isSelected()+"','"+campoEmailProf1Agregar.getText()+"','"+campoEmailProf2Agregar.getText()+"',"+campoTel1ProfAgregar.getText()+",NULL)";
                            }
                        } 
                        else{
                            if(campoEmailProf2Agregar.getText().equals("")){
                                consultaSQL = "insert into profesor (cedula, nombre, apellido1, apellido2, fecha_nac, activo, email1, email2, tel1, tel2) VALUES ('"+campoCedulaProfAgregar.getText()+"','"+campoNombreProfAgregar.getText()+"','"+campoApellido1ProfAgregar.getText()+"',NULL,'"+getFechaNac(obtenerFechaDatePicker(campoFechaNacProfAgregar))+"','"+estadoActivoProfAgregar.isSelected()+"','"+campoEmailProf1Agregar.getText()+"',NULL,"+campoTel1ProfAgregar.getText()+","+campoTel2ProfAgregar.getText()+")";
                            }
                            else{
                                consultaSQL = "insert into profesor (cedula, nombre, apellido1, apellido2, fecha_nac, activo, email1, email2, tel1, tel2) VALUES ('"+campoCedulaProfAgregar.getText()+"','"+campoNombreProfAgregar.getText()+"','"+campoApellido1ProfAgregar.getText()+"',NULL,'"+getFechaNac(obtenerFechaDatePicker(campoFechaNacProfAgregar))+"','"+estadoActivoProfAgregar.isSelected()+"','"+campoEmailProf1Agregar.getText()+"','"+campoEmailProf2Agregar.getText()+"',"+campoTel1ProfAgregar.getText()+","+campoTel2ProfAgregar.getText()+")";
                            }
                        }
                    }
                    else{
                        if(campoTel2ProfAgregar.getText().equals("")){
                            if(campoEmailProf2Agregar.getText().equals("")){
                                consultaSQL = "insert into profesor (cedula, nombre, apellido1, apellido2, fecha_nac, activo, email1, email2, tel1, tel2) VALUES ('"+campoCedulaProfAgregar.getText()+"','"+campoNombreProfAgregar.getText()+"','"+campoApellido1ProfAgregar.getText()+"','"+campoApellido2ProfAgregar.getText()+"','"+getFechaNac(obtenerFechaDatePicker(campoFechaNacProfAgregar))+"','"+estadoActivoProfAgregar.isSelected()+"','"+campoEmailProf1Agregar.getText()+"',NULL,"+campoTel1ProfAgregar.getText()+",NULL)";
                            }
                            else{
                                consultaSQL = "insert into profesor (cedula, nombre, apellido1, apellido2, fecha_nac, activo, email1, email2, tel1, tel2) VALUES ('"+campoCedulaProfAgregar.getText()+"','"+campoNombreProfAgregar.getText()+"','"+campoApellido1ProfAgregar.getText()+"','"+campoApellido2ProfAgregar.getText()+"','"+getFechaNac(obtenerFechaDatePicker(campoFechaNacProfAgregar))+"','"+estadoActivoProfAgregar.isSelected()+"','"+campoEmailProf1Agregar.getText()+"','"+campoEmailProf2Agregar.getText()+"',"+campoTel1ProfAgregar.getText()+",NULL)";
                            }
                        } 
                        else{
                            if(campoEmailProf2Agregar.getText().equals("")){
                                consultaSQL = "insert into profesor (cedula, nombre, apellido1, apellido2, fecha_nac, activo, email1, email2, tel1, tel2) VALUES ('"+campoCedulaProfAgregar.getText()+"','"+campoNombreProfAgregar.getText()+"','"+campoApellido1ProfAgregar.getText()+"','"+campoApellido2ProfAgregar.getText()+"','"+getFechaNac(obtenerFechaDatePicker(campoFechaNacProfAgregar))+"','"+estadoActivoProfAgregar.isSelected()+"','"+campoEmailProf1Agregar.getText()+"',NULL,"+campoTel1ProfAgregar.getText()+","+campoTel2ProfAgregar.getText()+")";
                            }
                            else{
                                consultaSQL = "insert into profesor (cedula, nombre, apellido1, apellido2, fecha_nac, activo, email1, email2, tel1, tel2) VALUES ('"+campoCedulaProfAgregar.getText()+"','"+campoNombreProfAgregar.getText()+"','"+campoApellido1ProfAgregar.getText()+"','"+campoApellido2ProfAgregar.getText()+"','"+getFechaNac(obtenerFechaDatePicker(campoFechaNacProfAgregar))+"','"+estadoActivoProfAgregar.isSelected()+"','"+campoEmailProf1Agregar.getText()+"','"+campoEmailProf2Agregar.getText()+"',"+campoTel1ProfAgregar.getText()+","+campoTel2ProfAgregar.getText()+")";
                            }
                        }
                    }
                
                
        
                //consultaSQL = "insert into estudiante (cedula, nombre, apellido1, apellido2, fecha_nac, activo, cedula_resp, nombre_resp, apellido1_resp, apellido2_resp, fecha_nac_resp, telefonos, telefonos_resp) VALUES ('"+campoCedulaEst.getText()+"','"+campoNombreEst.getText()+"','"+campoAp1Est.getText()+"','"+campoApe2Est.getText()+"','"+getFechaNac(obtenerFechaDatePicker(campoFechaNacEst))+"','"+campoCedulaResp.getText()+"','"+campoNombreResp.getText()+"','"+campoApe1Resp.getText()+"','"+campoApe2Resp.getText()+"','"+getFechaNac(obtenerFechaDatePicker(campoFechaNacEst))+","+campoEmailEst1.getText()+"','"+campoEmailResp.getText()+"','"+campoTel1Resp.getText()+"','"+campoTel2Est.getText()+"','"+campoTel1Est.getText()+"','"+campoTel2Est.getText()+"','"+"','"+obtenerFechaDatePicker(campoFechaNacResp)+"')";
                
                resultado = sentencia.executeQuery(consultaSQL);

            } catch (SQLException e) {
                if(e.getSQLState().equals("02000")){ //no_data , una inserción no devuelve nada
                    JOptionPane.showMessageDialog(null,"\n ¡Expediente de profesor creado con éxito!","Éxito",JOptionPane.INFORMATION_MESSAGE);
                    cancelarOCrearExpediente();
                }
                else{       
                    if(e.getSQLState().equals("23505")){ //unique violation: llave duplicada
                        errorProfesorIngresado();
                        JOptionPane.showMessageDialog(null, "\n Imposible registrar expediente de dicho profesor\n Un profesor con dicha cédula ya ha sido registrado, por favor asegúrese de ingresar correctamete los datos", "Error", JOptionPane.ERROR_MESSAGE); 
                    }
                    else{
                        JOptionPane.showMessageDialog(null, "\n Imposible registrar profesor \n Por favor ingresar los datos correctamente", "Error", JOptionPane.ERROR_MESSAGE);
                        e.printStackTrace();
                        conexion = null;
                    }
                }
            }
            finally {
                if (resultado != null) {
                    try {
                        resultado.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
                if (sentencia != null) {
                    try {
                        sentencia.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
                if (conexion != null) {
                    try {
                        conexion.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    } 
    
    
    private void actualizarExpediente(){
        int confirmado = JOptionPane.showOptionDialog(
            null,"Confirmar actualización del expediente de profesor de "+campoCedulaProfAct.getText()+"-"+campoNombreProfAct.getText().replaceAll("\\s+$","")+" "+campoApellido1ProfAct.getText()+" "+campoApellido2ProfAct.getText(), "Confirmación requerida",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE,
            null,    // null para icono por defecto.
            new Object[] { "Correcto", "Cancelar"},   // null para YES, NO y CANCEL
            null);
                
        if(confirmado==0){
            Connection conexion=null;
            Statement sentencia=null;
            ResultSet resultado=null;
        
            try {
                Class.forName("org.postgresql.Driver");
            }catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            try{
                conexion = DriverManager.getConnection(cadenaConexion);
                sentencia = conexion.createStatement();
                String consultaSQL="";
                    if(campoApellido2ProfAct.getText().equals("")){
                        if(campoTel2ProfAct.getText().equals("")){
                            if(campoEmailProf2Act.getText().equals("")){
                                consultaSQL = "update profesor set cedula='"+campoCedulaProfAct.getText()+"',nombre='"+campoNombreProfAct.getText()+"',apellido1='"+campoApellido1ProfAct.getText()+"',apellido2=NULL,fecha_nac='"+getFechaNac(obtenerFechaDatePicker(campoFechaNacProfAct))+"',activo='"+estadoActivoProfAct.isSelected()+"',email1='"+campoEmailProf1Act.getText()+"',email2=NULL,tel1="+campoTel1ProfAct.getText()+",tel2=NULL  where cedula='"+campoCedulaProfAct.getText()+"'";
                            }
                            else{
                                consultaSQL = "update profesor set cedula='"+campoCedulaProfAct.getText()+"',nombre='"+campoNombreProfAct.getText()+"',apellido1='"+campoApellido1ProfAct.getText()+"',apellido2=NULL,fecha_nac='"+getFechaNac(obtenerFechaDatePicker(campoFechaNacProfAct))+"',activo='"+estadoActivoProfAct.isSelected()+"',email1='"+campoEmailProf1Act.getText()+"',email2='"+campoEmailProf2Act.getName()+"',tel1="+campoTel1ProfAct.getText()+",tel2=NULL  where cedula='"+campoCedulaProfAct.getText()+"'";
                            }
                        } 
                        else{
                            if(campoEmailProf2Act.getText().equals("")){
                                consultaSQL = "update profesor set cedula='"+campoCedulaProfAct.getText()+"',nombre='"+campoNombreProfAct.getText()+"',apellido1='"+campoApellido1ProfAct.getText()+"',apellido2=NULL,fecha_nac='"+getFechaNac(obtenerFechaDatePicker(campoFechaNacProfAct))+"',activo='"+estadoActivoProfAct.isSelected()+"',email1='"+campoEmailProf1Act.getText()+"',email2=NULL,tel1="+campoTel1ProfAct.getText()+",tel2="+campoTel2ProfAct.getText()+"  where cedula='"+campoCedulaProfAct.getText()+"'";
                            }
                            else{
                                consultaSQL = "update profesor set cedula='"+campoCedulaProfAct.getText()+"',nombre='"+campoNombreProfAct.getText()+"',apellido1='"+campoApellido1ProfAct.getText()+"',apellido2=NULL,fecha_nac='"+getFechaNac(obtenerFechaDatePicker(campoFechaNacProfAct))+"',activo='"+estadoActivoProfAct.isSelected()+"',email1='"+campoEmailProf1Act.getText()+"',email2='"+campoEmailProf2Act.getText()+"',tel1="+campoTel1ProfAct.getText()+",tel2="+campoTel2ProfAct.getText()+"  where cedula='"+campoCedulaProfAct.getText()+"'";
                            }
                        }
                    }
                    else{
                        if(campoTel2ProfAct.getText().equals("")){
                            if(campoEmailProf2Act.getText().equals("")){
                                consultaSQL = "update profesor set cedula='"+campoCedulaProfAct.getText()+"',nombre='"+campoNombreProfAct.getText()+"',apellido1='"+campoApellido1ProfAct.getText()+"',apellido2='"+campoApellido2ProfAct.getText()+"',fecha_nac='"+getFechaNac(obtenerFechaDatePicker(campoFechaNacProfAct))+"',activo='"+estadoActivoProfAct.isSelected()+"',email1='"+campoEmailProf1Act.getText()+"',email2=NULL,tel1="+campoTel1ProfAct.getText()+",tel2=NULL  where cedula='"+campoCedulaProfAct.getText()+"'";
                            }
                            else{
                                consultaSQL = "update profesor set cedula='"+campoCedulaProfAct.getText()+"',nombre='"+campoNombreProfAct.getText()+"',apellido1='"+campoApellido1ProfAct.getText()+"',apellido2='"+campoApellido2ProfAct.getText()+"',fecha_nac='"+getFechaNac(obtenerFechaDatePicker(campoFechaNacProfAct))+"',activo='"+estadoActivoProfAct.isSelected()+"',email1='"+campoEmailProf1Act.getText()+"',email2='"+campoEmailProf2Act.getName()+"',tel1="+campoTel1ProfAct.getText()+",tel2=NULL  where cedula='"+campoCedulaProfAct.getText()+"'";
                            }
                        } 
                        else{
                            if(campoEmailProf2Act.getText().equals("")){
                                consultaSQL = "update profesor set cedula='"+campoCedulaProfAct.getText()+"',nombre='"+campoNombreProfAct.getText()+"',apellido1='"+campoApellido1ProfAct.getText()+"',apellido2='"+campoApellido2ProfAct.getText()+"',fecha_nac='"+getFechaNac(obtenerFechaDatePicker(campoFechaNacProfAct))+"',activo='"+estadoActivoProfAct.isSelected()+"',email1='"+campoEmailProf1Act.getText()+"',email2=NULL,tel1="+campoTel1ProfAct.getText()+",tel2="+campoTel2ProfAct.getText()+"  where cedula='"+campoCedulaProfAct.getText()+"'";
                            }
                            else{
                                consultaSQL = "update profesor set cedula='"+campoCedulaProfAct.getText()+"',nombre='"+campoNombreProfAct.getText()+"',apellido1='"+campoApellido1ProfAct.getText()+"',apellido2='"+campoApellido2ProfAct.getText()+"',fecha_nac='"+getFechaNac(obtenerFechaDatePicker(campoFechaNacProfAct))+"',activo='"+estadoActivoProfAct.isSelected()+"',email1='"+campoEmailProf1Act.getText()+"',email2='"+campoEmailProf2Act.getText()+"',tel1="+campoTel1ProfAct.getText()+",tel2="+campoTel2ProfAct.getText()+"  where cedula='"+campoCedulaProfAct.getText()+"'";
                            }
                        }
                    }
            
                resultado = sentencia.executeQuery(consultaSQL);

            } catch (SQLException e) {
                if(e.getSQLState().equals("02000")){ //no_data , una inserción no devuelve nada
                    JOptionPane.showMessageDialog(null,"\n ¡Expediente de profesor actualizado con éxito!","Éxito",JOptionPane.INFORMATION_MESSAGE);
                    actualizarProfSelecTabla();
                    cancelarOActualizarExpediente(1);
                }
                else{
                    JOptionPane.showMessageDialog(null, "\n Imposible actualizar profesor \n Por favor ingresar los datos correctamente", "Error", JOptionPane.ERROR_MESSAGE);
                    e.printStackTrace();
                    conexion = null;
                }
            }
            finally {
                if (resultado != null) {
                    try {
                        resultado.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
                if (sentencia != null) {
                    try {
                        sentencia.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
                if (conexion != null) {
                    try {
                        conexion.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    
    }
    
    
    private void initComponents2(){
        astNombreProfAgregar.setVisible(false);
        astApellido1ProfAgregar.setVisible(false);
        astCedulaProfAgregar.setVisible(false);
        astFechaNacProfAgregar.setVisible(false);
        ((JTextField)campoFechaNacProfAgregar.getDateEditor().getUiComponent()).setEditable(false);
        campoFechaNacProfAgregar.getDateEditor().addPropertyChangeListener(
        new PropertyChangeListener() {
            @Override
            public void propertyChange(PropertyChangeEvent e) {
                if ("date".equals(e.getPropertyName())) {
                    actualizarControlesProfesoresAgregar();
                }
            }
        });
        astCorreoProfAgregar.setVisible(false);
        astTel1ProfAgregar.setVisible(false);
        astEstadoProfAgregar.setVisible(false);
        
        DocumentListener controlCambios = new DocumentListener() {
            @Override
            public void insertUpdate(DocumentEvent de) {
                actualizarControlesProfesoresAgregar();
            }

            @Override
            public void removeUpdate(DocumentEvent de) {
                actualizarControlesProfesoresAgregar();
            }

            @Override
            public void changedUpdate(DocumentEvent de) {
                actualizarControlesProfesoresAgregar();
            }
 
        };
        campoNombreProfAgregar.getDocument().addDocumentListener(controlCambios);
        campoApellido1ProfAgregar.getDocument().addDocumentListener(controlCambios);
        campoCedulaProfAgregar.getDocument().addDocumentListener(controlCambios);
        campoEmailProf1Agregar.getDocument().addDocumentListener(controlCambios);
        campoTel1ProfAgregar.getDocument().addDocumentListener(controlCambios);
        
    }
    
    
    private void actualizarControlesProfesoresAgregar(){
        if(campoNombreProfAgregar.isEnabled()){
            puedeIngresarExpediente2();
        }
    }
    
    private void puedeIngresarExpediente2(){
        if(!campoNombreProfAgregar.getText().equals("") && !campoApellido1ProfAgregar.getText().equals("") && !campoCedulaProfAgregar.getText().equals("") && campoFechaNacProfAgregar.getDate()!=null && !campoEmailProf1Agregar.getText().equals("") && !campoTel1ProfAgregar.getText().equals("") && (estadoActivoProfAgregar.isSelected()||estadoInactivoProfAgregar.isSelected())){
            btnCrearProfAgregar.setEnabled(true);
        }
        else{
            btnCrearProfAgregar.setEnabled(false);
        }
        
    }
    
    private void puedeIngresarExpediente(){
        if(btnCrearProfAgregar.isEnabled()){
            if(filtrosProfesor()){
                ingresarExpediente();
            }
        }
    }
    
    private boolean maxLargoNombreProf(){
        if(campoNombreProfAgregar.getText().length()<31){
            return true;
        }
        else{
            return false;
        }
    }
    
    private boolean minLargoNombreProf(){
        if(campoNombreProfAgregar.getText().length()>1){
            return true;
        }
        else{
            return false;
        }
    }
    
    private boolean maxLargoApellido1Prof(){
        if(campoApellido1ProfAgregar.getText().length()<31){
            return true;
        }
        else{
            return false;
        }
    }
    
    private boolean minLargoApellido1Prof(){
        if(campoApellido1ProfAgregar.getText().length()>1){
            return true;
        }
        else{
            return false;
        }
    }
    
    private boolean maxLargoApellido2Prof(){
        if(campoApellido2ProfAgregar.getText().length()<31){
            return true;
        }
        else{
            return false;
        }
    }
    
    private boolean minLargoApellido2Prof(){
        if(campoApellido2ProfAgregar.getText().length()>1){
            return true;
        }
        else{
            return false;
        }
    }
    
    private boolean maxLargoCedulaProf(){
        if(campoCedulaProfAgregar.getText().length()<13){
            return true;
        }
        else{
            return false;
        }
    }
    
    private boolean minLargoCedulaProf(){
        if(campoCedulaProfAgregar.getText().length()>8){
            return true;
        }
        else{
            return false;
        }
    }
    
    private boolean maxLargoEmail1Prof(){
        if(campoEmailProf1Agregar.getText().length()<65){
            return true;
        }
        else{
            return false;
        }
    }
    
    private boolean maxLargoEmail2Prof(){
        if(campoEmailProf2Agregar.getText().length()<65){
            return true;
        }
        else{
            return false;
        }
    }
    
    private boolean largoTel1Prof(){
        if(campoTel1ProfAgregar.getText().length()==8){
            return true;
        }
        else{
            return false;
        }
    }
    
    private boolean largoTel2Prof(){
        if(campoTel2ProfAgregar.getText().length()==8){
            return true;
        }
        else{
            return false;
        }
    }
    
        
    private boolean filtrosProfesor(){
        int filtro1,filtro2,filtro3,filtro4,filtro5,filtro6,filtro7,filtro8,filtro9,filtro10;
        filtro1=filtro2=filtro3=filtro4=filtro5=filtro6=filtro7=filtro8=filtro9=filtro10=0;
        
        if(!minLargoCedulaProf()||!maxLargoCedulaProf()){
            filtro1=1;
        }
        if(!minLargoNombreProf()||!maxLargoNombreProf()){
            filtro2=1;
        }
        if(!minLargoApellido1Prof()||!maxLargoApellido1Prof()){
            filtro3=1;
        }
        if(!campoApellido2ProfAgregar.getText().equals("")){
            if(!minLargoApellido2Prof()||!maxLargoApellido2Prof()){
                filtro4=1;                         
            }
        }
        if(!maxLargoEmail1Prof()){
            filtro5=1;
        }
        if(!validarCorreo(campoEmailProf1Agregar.getText())){
            filtro6=1;
        }
        if(!campoEmailProf2Agregar.getText().equals("")){
            if(!maxLargoEmail2Prof()){
                filtro7=1;                         
            }
            if(!validarCorreo(campoEmailProf2Agregar.getText())){
                filtro8=1;
            }
        }
        if(!largoTel1Prof()){
            filtro9=1;
        }
        if(!campoTel2ProfAgregar.getText().equals("")){
            if(!largoTel2Prof()){
                filtro10=1;
            }
        }
        
        return filtroAvisosProfesor(filtro1,filtro2,filtro3,filtro4,filtro5,filtro6,filtro7,filtro8,filtro9,filtro10);
        
    }
    
    private boolean filtroAvisosProfesor(int filtro1, int filtro2, int filtro3, int filtro4, int filtro5, int filtro6, int filtro7, int filtro8, int filtro9, int filtro10){
        String aviso1,aviso2,aviso3,aviso4,aviso5,aviso6,aviso7,aviso8,aviso9,aviso10;
        aviso1=aviso2=aviso3=aviso4=aviso5=aviso6=aviso7=aviso8=aviso9=aviso10="";
        
        if(filtro1==1){
            aviso1="\nLa cédula del profesor no puede tener más de 12 y no menos de 9 caracteres";
        }
        if(filtro2==1){
            aviso2="\nEl nombre del profesor no puede tener más de 30 y no menos de 1 caracter";
        }
        if(filtro3==1){
            aviso3="\nEl primer apellido del profesor no puede tener más de 30 y no menos de 1 caracter";
        }
        if(filtro4==1){
            aviso4="\nEl segundo apellido del profesor no puede tener más de 30 y no menos de 1 caracter";
        }
        if(filtro5==1){
            aviso5="\nEl primer correo eletrónico del profesor no puede tener más de 64 caracteres";
        }
        if(filtro6==1){
            aviso6="\nEl formato del primer correo del profesor debe tener el siguiente formato: inicio@primerDominio.segundoDominio"
                    + "\nEjemplo: are123(inicio)@gmail(primer dominio).com(segundo dominio)"
                    + "\nEl inicio debe tener mínimo un caracter al igual que el primer dominio. El segundo dominio un mínimo de dos.";
        }
        if(filtro7==1){
            aviso7="\nEl segundo correo eletrónico del profesor no puede tener más de 64 caracteres";
        }
        if(filtro8==1){
            aviso8="\nEl formato del segundo correo del profesor debe tener el siguiente formato: inicio@primerDominio.segundoDominio"
                    + "\nEjemplo: are123(inicio)@gmail(primer dominio).com(segundo dominio)"
                    + "\nEl inicio debe tener mínimo un caracter al igual que el primer dominio. El segundo dominio un mínimo de dos.";
        }
        if(filtro9==1){
            aviso9="\nEl primer teléfono del profesor debe ser de 8 caracteres";
        }
        if(filtro10==1){
            aviso10="\nEl segundo teléfono del profesor debe ser de 8 caracteres";
        }
        
        subrayadoErrorProfesor(filtro1,filtro2,filtro3,filtro4,filtro5,filtro6,filtro7,filtro8,filtro9,filtro10);
        
        if(aviso1.equals("")&&aviso2.equals("")&&aviso3.equals("")&&aviso4.equals("")&&aviso5.equals("")&&aviso6.equals("")&&aviso7.equals("")&&aviso8.equals("")&&aviso9.equals("")&&aviso10.equals("")){
            return true;
        }
        else{
            JOptionPane.showMessageDialog(null, aviso1+aviso2+aviso3+aviso4+aviso5+aviso6+aviso7+aviso8+aviso9+aviso10, "Error", JOptionPane.ERROR_MESSAGE);
            return false;
        }
    }
    
    
    
    private void subrayadoErrorProfesor(int filtro1, int filtro2, int filtro3, int filtro4, int filtro5, int filtro6, int filtro7, int filtro8, int filtro9, int filtro10){
        if(filtro1==1){
            campoCedulaProfAgregar.setBackground(new Color(255,51,51));
            campoCedulaProfAgregar.setToolTipText("Revisar cédula de profesor");
        }
        if(filtro1==0){
            campoCedulaProfAgregar.setBackground(Color.white);
            campoCedulaProfAgregar.setToolTipText(null);
        }
        if(filtro2==1){
            campoNombreProfAgregar.setBackground(new Color(255,51,51));
            campoNombreProfAgregar.setToolTipText("Revisar nombre de profesor");
        }
        if(filtro2==0){
            campoNombreProfAgregar.setBackground(Color.white);
            campoNombreProfAgregar.setToolTipText(null);
        }
        if(filtro3==1){
            campoApellido1ProfAgregar.setBackground(new Color(255,51,51));
            campoApellido1ProfAgregar.setToolTipText("Revisar apellido de profesor");
        }
        if(filtro3==0){
            campoApellido1ProfAgregar.setBackground(Color.white);
            campoApellido1ProfAgregar.setToolTipText(null);
        }
        if(filtro4==1){
            campoApellido2ProfAgregar.setBackground(new Color(255,51,51));
            campoApellido2ProfAgregar.setToolTipText("Revisar apellido de profesor");
        }
        if(filtro4==0){
            campoApellido2ProfAgregar.setBackground(Color.white);
            campoApellido2ProfAgregar.setToolTipText(null);
        }
        if(filtro5==1||filtro6==1){
            campoEmailProf1Agregar.setBackground(new Color(255,51,51));
            campoEmailProf1Agregar.setToolTipText("Revisar correo de profesor");
        }
        if(filtro5==0&&filtro6==0){
            campoEmailProf1Agregar.setBackground(Color.white);
            campoEmailProf1Agregar.setToolTipText(null);
        }
        if(filtro7==1|filtro8==1){
            campoEmailProf2Agregar.setBackground(new Color(255,51,51));
            campoEmailProf2Agregar.setToolTipText("Revisar correo de profesor");
        }
        if(filtro7==0&&filtro8==0){
            campoEmailProf2Agregar.setBackground(Color.white);
            campoEmailProf2Agregar.setToolTipText(null);
        }
        if(filtro9==1){
            campoTel1ProfAgregar.setBackground(new Color(255,51,51));
            campoTel1ProfAgregar.setToolTipText("Revisar teléfono de profesor");
        }
        if(filtro9==0){
            campoTel1ProfAgregar.setBackground(Color.white);
            campoTel1ProfAgregar.setToolTipText(null);
        }
        if(filtro10==1){
            campoTel2ProfAgregar.setBackground(new Color(255,51,51));
            campoTel2ProfAgregar.setToolTipText("Revisar teléfono de profesor");
        }
        if(filtro10==0){
            campoTel2ProfAgregar.setBackground(Color.white);
            campoTel2ProfAgregar.setToolTipText(null);
        }
    }
    
    
    
    private void initComponents3(){
        scrollProfesoresActualizar.getViewport().setBackground(Color.WHITE);
        ((JTextField)campoFechaNacProfAct.getDateEditor().getUiComponent()).setEditable(false);
        campoFechaNacProfAct.getDateEditor().addPropertyChangeListener(
        new PropertyChangeListener() {
            @Override
            public void propertyChange(PropertyChangeEvent e) {
                if ("date".equals(e.getPropertyName())) {
                    actualizarControlesProfesoresAct();
                }
            }
        });
        
        DocumentListener controlCambios = new DocumentListener() {
            @Override
            public void insertUpdate(DocumentEvent de) {
                actualizarControlesProfesoresAct();
            }

            @Override
            public void removeUpdate(DocumentEvent de) {
                actualizarControlesProfesoresAct();
            }

            @Override
            public void changedUpdate(DocumentEvent de) {
                actualizarControlesProfesoresAct();
            }
 
        };
        
        
        campoNombreProfAct.getDocument().addDocumentListener(controlCambios);
        campoApellido1ProfAct.getDocument().addDocumentListener(controlCambios);
        campoCedulaProfAct.getDocument().addDocumentListener(controlCambios);
        campoEmailProf1Act.getDocument().addDocumentListener(controlCambios);
        campoTel1ProfAct.getDocument().addDocumentListener(controlCambios);
        
        tablaProfesoresActualizar.getColumnModel().getColumn(0).setMaxWidth(55);
        tablaProfesoresActualizar.getColumnModel().getColumn(0).setMinWidth(55);
        tablaProfesoresActualizar.getColumnModel().getColumn(1).setMaxWidth(45);
        tablaProfesoresActualizar.getColumnModel().getColumn(1).setMinWidth(45);
        tablaProfesoresActualizar.getColumnModel().getColumn(2).setMaxWidth(115);
        tablaProfesoresActualizar.getColumnModel().getColumn(2).setMinWidth(115);
        tablaProfesoresActualizar.getColumnModel().getColumn(3).setMaxWidth(65);
        tablaProfesoresActualizar.getColumnModel().getColumn(3).setMinWidth(65);
        tablaProfesoresActualizar.getColumnModel().getColumn(4).setMaxWidth(115);
        tablaProfesoresActualizar.getColumnModel().getColumn(4).setMinWidth(115);
        tablaProfesoresActualizar.getColumnModel().getColumn(5).setMaxWidth(115);
        tablaProfesoresActualizar.getColumnModel().getColumn(5).setMinWidth(115);
        tablaProfesoresActualizar.getColumnModel().getColumn(6).setMaxWidth(45);
        tablaProfesoresActualizar.getColumnModel().getColumn(6).setMinWidth(45);
        tablaProfesoresActualizar.getColumnModel().getColumn(7).setMaxWidth(45);
        tablaProfesoresActualizar.getColumnModel().getColumn(7).setMinWidth(45);
        
        tablaProfesoresActualizar.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                rellenarCamposActualizar();
                habilitarCamposRespectivos();
                actualizarControlesProfesoresAct();
            }
        });
    }
    
    
    
    private void cancelarOActualizarExpediente(int modo){
        campoBusquedaProfActualizar.requestFocus();
        btnActualizarProf.setEnabled(false);
        btnCancelarProfAct.setEnabled(false);
        campoNombreProfAct.setBackground(new Color(240,240,240));
        campoNombreProfAct.setToolTipText(null);        
        campoNombreProfAct.setEnabled(false);
        campoNombreProfAct.setText("");
        campoApellido1ProfAct.setBackground(new Color(240,240,240));
        campoApellido1ProfAct.setToolTipText(null);
        campoApellido1ProfAct.setEnabled(false);
        campoApellido1ProfAct.setText("");
        campoApellido2ProfAct.setBackground(new Color(240,240,240));
        campoApellido2ProfAct.setToolTipText(null);
        campoApellido2ProfAct.setEnabled(false);
        campoApellido2ProfAct.setText("");
        campoCedulaProfAct.setBackground(new Color(240,240,240));
        campoCedulaProfAct.setText("");
        campoFechaNacProfAct.setDate(null);
        campoFechaNacProfAct.setEnabled(false);
        campoEmailProf1Act.setBackground(new Color(240,240,240));
        campoEmailProf1Act.setToolTipText(null);
        campoEmailProf1Act.setEnabled(false);
        campoEmailProf1Act.setText("");
        campoEmailProf2Act.setBackground(new Color(240,240,240));
        campoEmailProf2Act.setToolTipText(null);
        campoEmailProf2Act.setEnabled(false);
        campoEmailProf2Act.setText("");
        campoTel1ProfAct.setBackground(new Color(240,240,240));
        campoTel1ProfAct.setToolTipText(null);
        campoTel1ProfAct.setEnabled(false);
        campoTel1ProfAct.setText("");
        campoTel2ProfAct.setBackground(new Color(240,240,240));
        campoTel2ProfAct.setToolTipText(null);
        campoTel2ProfAct.setEnabled(false);
        campoTel2ProfAct.setText("");
        estadoActivoProfAct.setSelected(false);
        estadoActivoProfAct.setEnabled(false);
        estadoInactivoProfAct.setSelected(false);
        estadoInactivoProfAct.setEnabled(false);
        if(modo==1){
            tablaProfesoresActualizar.clearSelection();
            campoBusquedaProfActualizar.setText(null);
            actualizarProfesorSorter();
        }
    }
    
    private void actualizarProfSelecTabla(){
        if(estadoActivoProfAct.isSelected()){
            tablaProfesoresActualizar.setValueAt("Activo", tablaProfesoresActualizar.getSelectedRow(), 0);
        }
        else{
            tablaProfesoresActualizar.setValueAt("Inactivo", tablaProfesoresActualizar.getSelectedRow(), 0);
        }
        tablaProfesoresActualizar.setValueAt(campoCedulaProfAct.getText(), tablaProfesoresActualizar.getSelectedRow(), 1);
        tablaProfesoresActualizar.setValueAt(campoNombreProfAct.getText().replaceAll("\\s+$","")+" "+campoApellido1ProfAct.getText()+" "+campoApellido2ProfAct.getText(), tablaProfesoresActualizar.getSelectedRow(), 2);
        tablaProfesoresActualizar.setValueAt(((JTextField)campoFechaNacProfAct.getDateEditor().getUiComponent()).getText(), tablaProfesoresActualizar.getSelectedRow(), 3);
        tablaProfesoresActualizar.setValueAt(campoEmailProf1Act.getText(), tablaProfesoresActualizar.getSelectedRow(), 4);
        if(campoEmailProf2Act.getText()!=null){
            tablaProfesoresActualizar.setValueAt(campoEmailProf2Act.getText(), tablaProfesoresActualizar.getSelectedRow(), 5);
        }
        tablaProfesoresActualizar.setValueAt(campoTel1ProfAct.getText(), tablaProfesoresActualizar.getSelectedRow(), 6);
        if(campoTel2ProfAct.getText()!=null){        
            tablaProfesoresActualizar.setValueAt(campoTel2ProfAct.getText(), tablaProfesoresActualizar.getSelectedRow(), 7);
        }
        
    }
    
    private void rellenarCamposActualizar(){
        if(((String)tablaProfesoresActualizar.getValueAt(tablaProfesoresActualizar.getSelectedRow(), 0)).replaceAll("\\s+$","").equals("Activo")){
            estadoActivoProfAct.setSelected(true);
            estadoInactivoProfAct.setSelected(false);
        }
        else{
            estadoActivoProfAct.setSelected(false);
            estadoInactivoProfAct.setSelected(true);
        }
        campoCedulaProfAct.setText(((String)tablaProfesoresActualizar.getValueAt(tablaProfesoresActualizar.getSelectedRow(), 1)).replaceAll("\\s+$",""));
        campoNombreProfAct.setToolTipText(null);
        campoApellido1ProfAct.setToolTipText(null);
        campoApellido2ProfAct.setToolTipText(null);
        String nombre,apellido1,apellido2;
        nombre=apellido1=apellido2="";
        int largo=((String)tablaProfesoresActualizar.getValueAt(tablaProfesoresActualizar.getSelectedRow(), 2)).replaceAll("\\s+$","").length();
        String nombreComp=((String)tablaProfesoresActualizar.getValueAt(tablaProfesoresActualizar.getSelectedRow(), 2)).replaceAll("\\s+$","");
        int i=0;
        for(;i<largo;i++){
            if(nombreComp.charAt(i)!=' '){
                nombre=nombre+nombreComp.charAt(i);
            }
            else{
                i++;
                break;
            }
        }
        for(;i<largo;i++){
            if(nombreComp.charAt(i)!=' '){
                apellido1=apellido1+nombreComp.charAt(i);
            }
            else{
                i++;
                break;
            }
        }
        for(;i<largo;i++){
            if(nombreComp.charAt(i)!=' '){
                apellido2=apellido2+nombreComp.charAt(i);
            }
            else{
                break;
            }
        }
        campoNombreProfAct.setText(nombre);
        campoApellido1ProfAct.setText(apellido1);
        if(!apellido2.equals("")){
            campoApellido2ProfAct.setText(apellido2);
        }
        else{
            campoApellido2ProfAct.setText("");
        }
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
	String dateInString = ((String)tablaProfesoresActualizar.getValueAt(tablaProfesoresActualizar.getSelectedRow(), 3)).replaceAll("\\s+$","");
 
	try {
		Date date = formatter.parse(dateInString);
                campoFechaNacProfAct.setDate(date);
                
	} catch (ParseException e) {
		e.printStackTrace();
	}
        
        campoEmailProf1Act.setToolTipText(null);
        campoEmailProf1Act.setText(((String)tablaProfesoresActualizar.getValueAt(tablaProfesoresActualizar.getSelectedRow(), 4)).replaceAll("\\s+$",""));
        campoEmailProf2Act.setToolTipText(null);
        if(tablaProfesoresActualizar.getValueAt(tablaProfesoresActualizar.getSelectedRow(), 5)!=null){
            campoEmailProf2Act.setText(((String)tablaProfesoresActualizar.getValueAt(tablaProfesoresActualizar.getSelectedRow(), 5)).replaceAll("\\s+$",""));
        }
        else{
            campoEmailProf2Act.setText("");
        }
        campoTel1ProfAct.setToolTipText(null);
        campoTel1ProfAct.setText(""+tablaProfesoresActualizar.getValueAt(tablaProfesoresActualizar.getSelectedRow(), 6));
        campoTel2ProfAct.setToolTipText(null);
        if(tablaProfesoresActualizar.getValueAt(tablaProfesoresActualizar.getSelectedRow(), 7)!=null){
            campoTel2ProfAct.setText((""+tablaProfesoresActualizar.getValueAt(tablaProfesoresActualizar.getSelectedRow(), 7)));
        }
        else{
            campoTel2ProfAct.setText("");
        }
    }
    
    private void habilitarCamposRespectivos(){
        btnCancelarProfAct.setEnabled(true);
        campoCedulaProfAct.setBackground(new Color(240,240,240));
        campoCedulaProfAct.requestFocus();
        campoNombreProfAct.setEnabled(true);
        campoNombreProfAct.setBackground(Color.white);
        campoApellido1ProfAct.setEnabled(true);
        campoApellido1ProfAct.setBackground(Color.white);
        campoApellido2ProfAct.setEnabled(true);
        campoApellido2ProfAct.setBackground(Color.white);
        campoFechaNacProfAct.setEnabled(true);
        ((JTextField)campoFechaNacProfAct.getDateEditor().getUiComponent()).setBackground(Color.white);
        campoEmailProf1Act.setEnabled(true);
        campoEmailProf1Act.setBackground(Color.white);
        campoEmailProf2Act.setBackground(Color.white);
        campoEmailProf2Act.setEnabled(true);
        campoTel1ProfAct.setBackground(Color.white);
        campoTel1ProfAct.setEnabled(true);
        campoTel2ProfAct.setBackground(Color.white);
        campoTel2ProfAct.setEnabled(true);
        estadoActivoProfAct.setEnabled(true);
        estadoInactivoProfAct.setEnabled(true);
        
    }
    
    private void actualizarProfesorSorter(){
        TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(tablaProfesoresActualizar.getModel());
        tablaProfesoresActualizar.setRowSorter(sorter);
        if(campoBusquedaProfActualizar.getText().isEmpty()){
            sorter.setRowFilter(null);
        }    
        else{
            try{
                sorter.setRowFilter(RowFilter.regexFilter(campoBusquedaProfActualizar.getText()));
            }catch (PatternSyntaxException pse) {
                System.err.println("Bad regex pattern");
            }
        }
    }
    
    private void deseleccionadoActualizar(){
        if(tablaProfesoresActualizar.getSelectedRow()==-1){
            cancelarOActualizarExpediente(0);
        }
    }
    
    private void actualizarControlesProfesoresAct(){
        if(campoNombreProfAct.isEnabled()){
            puedeActualizarExpediente2();
        }
    }
    
    private void puedeActualizarExpediente2(){
        if(!campoNombreProfAct.getText().equals("") && !campoApellido1ProfAct.getText().equals("") && !campoCedulaProfAct.getText().equals("") && campoFechaNacProfAct.getDate()!=null && !campoEmailProf1Act.getText().equals("") && !campoTel1ProfAct.getText().equals("") && (estadoActivoProfAct.isSelected()||estadoInactivoProfAct.isSelected())){
            btnActualizarProf.setEnabled(true);
        }
        else{
            btnActualizarProf.setEnabled(false);
        }
        
    }
    
    private void puedeActualizarExpediente(){
        if(btnActualizarProf.isEnabled()){
            if(filtrosProfesorAct()){
                actualizarExpediente();
            }
        }
    }
    
    private boolean maxLargoNombreProfAct(){
        if(campoNombreProfAct.getText().length()<31){
            return true;
        }
        else{
            return false;
        }
    }
    
    private boolean minLargoNombreProfAct(){
        if(campoNombreProfAct.getText().length()>1){
            return true;
        }
        else{
            return false;
        }
    }
    
    private boolean maxLargoApellido1ProfAct(){
        if(campoApellido1ProfAct.getText().length()<31){
            return true;
        }
        else{
            return false;
        }
    }
    
    private boolean minLargoApellido1ProfAct(){
        if(campoApellido1ProfAct.getText().length()>1){
            return true;
        }
        else{
            return false;
        }
    }
    
    private boolean maxLargoApellido2ProfAct(){
        if(campoApellido2ProfAct.getText().length()<31){
            return true;
        }
        else{
            return false;
        }
    }
    
    private boolean minLargoApellido2ProfAct(){
        if(campoApellido2ProfAct.getText().length()>1){
            return true;
        }
        else{
            return false;
        }
    }
    
    private boolean maxLargoEmail1ProfAct(){
        if(campoEmailProf1Act.getText().length()<65){
            return true;
        }
        else{
            return false;
        }
    }
    
    private boolean maxLargoEmail2ProfAct(){
        if(campoEmailProf2Act.getText().length()<65){
            return true;
        }
        else{
            return false;
        }
    }
    
    private boolean largoTel1ProfAct(){
        if(campoTel1ProfAct.getText().length()==8){
            return true;
        }
        else{
            return false;
        }
    }
    
    private boolean largoTel2ProfAct(){
        if(campoTel2ProfAct.getText().length()==8){
            return true;
        }
        else{
            return false;
        }
    }
    
    
    private boolean filtrosProfesorAct(){
        int filtro2,filtro3,filtro4,filtro5,filtro6,filtro7,filtro8,filtro9,filtro10;
        filtro2=filtro3=filtro4=filtro5=filtro6=filtro7=filtro8=filtro9=filtro10=0;
        
        if(!minLargoNombreProfAct()||!maxLargoNombreProfAct()){
            filtro2=1;
        }
        if(!minLargoApellido1ProfAct()||!maxLargoApellido1ProfAct()){
            filtro3=1;
        }
        if(!campoApellido2ProfAct.getText().equals("")){
            if(!minLargoApellido2ProfAct()||!maxLargoApellido2ProfAct()){
                filtro4=1;                         
            }
        }
        if(!maxLargoEmail1ProfAct()){
            filtro5=1;
        }
        if(!validarCorreo(campoEmailProf1Act.getText())){
            filtro6=1;
        }
        if(!campoEmailProf2Act.getText().equals("")){
            if(!maxLargoEmail2ProfAct()){
                filtro7=1;                         
            }
            if(!validarCorreo(campoEmailProf2Act.getText())){
                filtro8=1;
            }
        }
        if(!largoTel1ProfAct()){
            filtro9=1;
        }
        if(!campoTel2ProfAct.getText().equals("")){
            if(!largoTel2ProfAct()){
                filtro10=1;
            }
        }
        
        return filtroAvisosEstudianteMayorAct(filtro2,filtro3,filtro4,filtro5,filtro6,filtro7,filtro8,filtro9,filtro10);
        
    }
    
    private boolean filtroAvisosEstudianteMayorAct(int filtro2, int filtro3, int filtro4, int filtro5, int filtro6, int filtro7, int filtro8, int filtro9, int filtro10){
        String aviso2,aviso3,aviso4,aviso5,aviso6,aviso7,aviso8,aviso9,aviso10;
        aviso2=aviso3=aviso4=aviso5=aviso6=aviso7=aviso8=aviso9=aviso10="";
        
        if(filtro2==1){
            aviso2="\nEl nombre del profesor no puede tener más de 30 y no menos de 1 caracter";
        }
        if(filtro3==1){
            aviso3="\nEl primer apellido del profesor no puede tener más de 30 y no menos de 1 caracter";
        }
        if(filtro4==1){
            aviso4="\nEl segundo apellido del profesor no puede tener más de 30 y no menos de 1 caracter";
        }
        if(filtro5==1){
            aviso5="\nEl primer correo eletrónico del profesor no puede tener más de 64 caracteres";
        }
        if(filtro6==1){
            aviso6="\nEl formato del primer correo del profesor debe tener el siguiente formato: inicio@primerDominio.segundoDominio"
                    + "\nEjemplo: are123(inicio)@gmail(primer dominio).com(segundo dominio)"
                    + "\nEl inicio debe tener mínimo un caracter al igual que el primer dominio. El segundo dominio un mínimo de dos.";
        }
        if(filtro7==1){
            aviso7="\nEl segundo correo eletrónico del profesor no puede tener más de 64 caracteres";
        }
        if(filtro8==1){
            aviso8="\nEl formato del segundo correo del profesor debe tener el siguiente formato: inicio@primerDominio.segundoDominio"
                    + "\nEjemplo: are123(inicio)@gmail(primer dominio).com(segundo dominio)"
                    + "\nEl inicio debe tener mínimo un caracter al igual que el primer dominio. El segundo dominio un mínimo de dos.";
        }
        if(filtro9==1){
            aviso9="\nEl primer teléfono del profesor debe ser de 8 caracteres";
        }
        if(filtro10==1){
            aviso10="\nEl segundo teléfono del profesor debe ser de 8 caracteres";
        }
        
        subrayadoErrorEstudianteMayorAct(filtro2,filtro3,filtro4,filtro5,filtro6,filtro7,filtro8,filtro9,filtro10);
        
        if(aviso2.equals("")&&aviso3.equals("")&&aviso4.equals("")&&aviso5.equals("")&&aviso6.equals("")&&aviso7.equals("")&&aviso8.equals("")&&aviso9.equals("")&&aviso10.equals("")){
            return true;
        }
        else{
            JOptionPane.showMessageDialog(null, aviso2+aviso3+aviso4+aviso5+aviso6+aviso7+aviso8+aviso9+aviso10, "Error", JOptionPane.ERROR_MESSAGE);
            return false;
        }
    }
    
    
    private void subrayadoErrorEstudianteMayorAct(int filtro2, int filtro3, int filtro4, int filtro5, int filtro6, int filtro7, int filtro8, int filtro9, int filtro10){
        
        if(filtro2==1){
            campoNombreProfAct.setBackground(new Color(255,51,51));
            campoNombreProfAct.setToolTipText("Revisar nombre de profesor");
        }
        if(filtro2==0){
            campoNombreProfAct.setBackground(Color.white);
            campoNombreProfAct.setToolTipText(null);
        }
        if(filtro3==1){
            campoApellido1ProfAct.setBackground(new Color(255,51,51));
            campoApellido1ProfAct.setToolTipText("Revisar apellido de profesor");
        }
        if(filtro3==0){
            campoApellido1ProfAct.setBackground(Color.white);
            campoApellido1ProfAct.setToolTipText(null);
        }
        if(filtro4==1){
            campoApellido2ProfAct.setBackground(new Color(255,51,51));
            campoApellido2ProfAct.setToolTipText("Revisar apellido de profesor");
        }
        if(filtro4==0){
            campoApellido2ProfAct.setBackground(Color.white);
            campoApellido2ProfAct.setToolTipText(null);
        }
        if(filtro5==1||filtro6==1){
            campoEmailProf1Act.setBackground(new Color(255,51,51));
            campoEmailProf1Act.setToolTipText("Revisar correo de profesor");
        }
        if(filtro5==0&&filtro6==0){
            campoEmailProf1Act.setBackground(Color.white);
            campoEmailProf1Act.setToolTipText(null);
        }
        if(filtro7==1|filtro8==1){
            campoEmailProf2Act.setBackground(new Color(255,51,51));
            campoEmailProf2Act.setToolTipText("Revisar correo de profesor");
        }
        if(filtro7==0&&filtro8==0){
            campoEmailProf2Act.setBackground(Color.white);
            campoEmailProf2Act.setToolTipText(null);
        }
        if(filtro9==1){
            campoTel1ProfAct.setBackground(new Color(255,51,51));
            campoTel1ProfAct.setToolTipText("Revisar teléfono de profesor");
        }
        if(filtro9==0){
            campoTel1ProfAct.setBackground(Color.white);
            campoTel1ProfAct.setToolTipText(null);
        }
        if(filtro10==1){
            campoTel2ProfAct.setBackground(new Color(255,51,51));
            campoTel2ProfAct.setToolTipText("Revisar teléfono de profesor");
        }
        if(filtro10==0){
            campoTel2ProfAct.setBackground(Color.white);
            campoTel2ProfAct.setToolTipText(null);
        }
    }
    
    
    private void initComponents4(){
               
        scrollProfesoresEliminar.getViewport().setBackground(Color.WHITE);
        tablaProfesoresEliminar.getColumnModel().getColumn(0).setMaxWidth(55);
        tablaProfesoresEliminar.getColumnModel().getColumn(0).setMinWidth(55);
        tablaProfesoresEliminar.getColumnModel().getColumn(1).setMaxWidth(45);
        tablaProfesoresEliminar.getColumnModel().getColumn(1).setMinWidth(45);
        tablaProfesoresEliminar.getColumnModel().getColumn(2).setMaxWidth(115);
        tablaProfesoresEliminar.getColumnModel().getColumn(2).setMinWidth(115);
        tablaProfesoresEliminar.getColumnModel().getColumn(3).setMaxWidth(65);
        tablaProfesoresEliminar.getColumnModel().getColumn(3).setMinWidth(65);
        tablaProfesoresEliminar.getColumnModel().getColumn(4).setMaxWidth(115);
        tablaProfesoresEliminar.getColumnModel().getColumn(4).setMinWidth(115);
        tablaProfesoresEliminar.getColumnModel().getColumn(5).setMaxWidth(115);
        tablaProfesoresEliminar.getColumnModel().getColumn(5).setMinWidth(115);
        tablaProfesoresEliminar.getColumnModel().getColumn(6).setMaxWidth(45);
        tablaProfesoresEliminar.getColumnModel().getColumn(6).setMinWidth(45);
        tablaProfesoresEliminar.getColumnModel().getColumn(7).setMaxWidth(45);
        tablaProfesoresEliminar.getColumnModel().getColumn(7).setMinWidth(45);
        
        tablaProfesoresEliminar.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                eliminarExpediente();
            }
        });
    }
    
    private void limpiarPanelEliminarExpediente(){
        campoBusquedaProfEliminar.setText("");
        tablaProfesoresEliminar.clearSelection();
        eliminarEstudianteSorter();
        campoBusquedaProfEliminar.requestFocus();
    }
    
    private void eliminarEstudianteSorter(){
        TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(tablaProfesoresEliminar.getModel());
        tablaProfesoresEliminar.setRowSorter(sorter);
        if(campoBusquedaProfEliminar.getText().isEmpty()){
            sorter.setRowFilter(null);
        }    
        else{
            try{
                sorter.setRowFilter(RowFilter.regexFilter(campoBusquedaProfEliminar.getText()));
            }catch (PatternSyntaxException pse) {
                System.err.println("Bad regex pattern");
            }
        }
    }
    
    private void initComponents5(){
               
        scrollProfesoresMostrar.getViewport().setBackground(Color.WHITE);
        tablaProfesoresMostrar.getColumnModel().getColumn(0).setMaxWidth(55);
        tablaProfesoresMostrar.getColumnModel().getColumn(0).setMinWidth(55);
        tablaProfesoresMostrar.getColumnModel().getColumn(1).setMaxWidth(45);
        tablaProfesoresMostrar.getColumnModel().getColumn(1).setMinWidth(45);
        tablaProfesoresMostrar.getColumnModel().getColumn(2).setMaxWidth(115);
        tablaProfesoresMostrar.getColumnModel().getColumn(2).setMinWidth(115);
        tablaProfesoresMostrar.getColumnModel().getColumn(3).setMaxWidth(65);
        tablaProfesoresMostrar.getColumnModel().getColumn(3).setMinWidth(65);
        tablaProfesoresMostrar.getColumnModel().getColumn(4).setMaxWidth(115);
        tablaProfesoresMostrar.getColumnModel().getColumn(4).setMinWidth(115);
        tablaProfesoresMostrar.getColumnModel().getColumn(5).setMaxWidth(115);
        tablaProfesoresMostrar.getColumnModel().getColumn(5).setMinWidth(115);
        tablaProfesoresMostrar.getColumnModel().getColumn(6).setMaxWidth(45);
        tablaProfesoresMostrar.getColumnModel().getColumn(6).setMinWidth(45);
        tablaProfesoresMostrar.getColumnModel().getColumn(7).setMaxWidth(45);
        tablaProfesoresMostrar.getColumnModel().getColumn(7).setMinWidth(45);
        
    }
    
    private void limpiarPanelMostrarExpediente(){
        campoBusquedaProfMostrar.setText("");
        tablaProfesoresMostrar.clearSelection();
        mostrarEstudianteSorter();
        campoBusquedaProfMostrar.requestFocus(); 
    }
    
    private void mostrarEstudianteSorter(){
        TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(tablaProfesoresMostrar.getModel());
        tablaProfesoresMostrar.setRowSorter(sorter);
        if(campoBusquedaProfMostrar.getText().isEmpty()){
            sorter.setRowFilter(null);
        }    
        else{
            try{
                sorter.setRowFilter(RowFilter.regexFilter(campoBusquedaProfMostrar.getText()));
            }catch (PatternSyntaxException pse) {
                System.err.println("Bad regex pattern");
            }
        }
    }
    
    
    private void eliminarExpediente(){
        
        int confirmado = JOptionPane.showOptionDialog(
            null,"Confirmar borrado del expediente del profesor: "+((String)tablaProfesoresEliminar.getValueAt(tablaProfesoresEliminar.getSelectedRow(), 1)).replaceAll("\\s+$","")+"-"+((String)tablaProfesoresEliminar.getValueAt(tablaProfesoresEliminar.getSelectedRow(), 2)).replaceAll("\\s+$","")+"\n \nConfirmación requerida", "Confirmación requerida",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE,
            null,    // null para icono por defecto.
            new Object[] { "Correcto", "Cancelar"},   // null para YES, NO y CANCEL
            null);
                
        if(confirmado==0){
        
            Connection conexion=null;
            Statement sentencia=null;
            ResultSet resultado=null;
        
            try {
                Class.forName("org.postgresql.Driver");
            }catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            try{
                conexion = DriverManager.getConnection(cadenaConexion);
                sentencia = conexion.createStatement();
          
                String consultaSQL = "delete from profesor where cedula='"+tablaProfesoresEliminar.getValueAt(tablaProfesoresEliminar.getSelectedRow(), 1) +"'";
                resultado = sentencia.executeQuery(consultaSQL);

            } catch (SQLException e) {
                if(e.getSQLState().equals("02000")){ //no_data , un delete no devuelve nada
                    ((DefaultTableModel)tablaProfesoresEliminar.getModel()).removeRow(tablaProfesoresEliminar.convertRowIndexToModel(tablaProfesoresEliminar.getSelectedRow()));
                    JOptionPane.showMessageDialog(null,"\n ¡Expediente de profesor eliminado con éxito!","Éxito",JOptionPane.INFORMATION_MESSAGE);
                    limpiarPanelEliminarExpediente();
                }
                else{       
                    JOptionPane.showMessageDialog(null, "\n Error en la base de datos \nImposible borrar expediente de profesor", "Error", JOptionPane.ERROR_MESSAGE);
                    e.printStackTrace();
                    conexion = null;
                }
            }
            finally {
                if (resultado != null) {
                    try {
                        resultado.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
                if (sentencia != null) {
                    try {
                        sentencia.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
                if (conexion != null) {
                    try {
                        conexion.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
     
    private void cargarProfesores(JTable tabla){
        Connection conexion=null;
        Statement sentencia=null;
        ResultSet resultado=null;
        Object[][] profesores;
        
        try {
            Class.forName("org.postgresql.Driver");
        }catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        try{
            conexion = DriverManager.getConnection(cadenaConexion);
            sentencia = conexion.createStatement();
            String consultaSQL = "select cedula,nombre,apellido1,apellido2,fecha_nac,activo,email1,email2,tel1,tel2 from profesor";
            resultado = sentencia.executeQuery(consultaSQL);
            
            int sizeProfesores=0;
            while (resultado.next()) {
                sizeProfesores++;
            }
            
            profesores = new Object[sizeProfesores][8];
            resultado = sentencia.executeQuery(consultaSQL);
            int i=0;
            while (resultado.next()) {
                if(resultado.getBoolean("activo")){
                    profesores[i][0]="Activo";
                }
                else{
                    profesores[i][0]="Inactivo";
                }
                profesores[i][1]=resultado.getString("cedula").replaceAll("\\s+$","");
                String prof=resultado.getString("nombre").replaceAll("\\s+$","")+" "+resultado.getString("apellido1").replaceAll("\\s+$","");
                if(resultado.getString("apellido2")!=null){
                    prof=prof+" "+resultado.getString("apellido2").replaceAll("\\s+$","");
                }
                profesores[i][2]=prof;
                profesores[i][3]=resultado.getString("fecha_nac");
                profesores[i][4]=resultado.getString("email1").replaceAll("\\s+$","");
                if(resultado.getString("email2")!=null){
                    profesores[i][5]=resultado.getString("email2");
                }
                profesores[i][6]=resultado.getInt("tel1");
                if(resultado.getInt("tel2")!=0){
                    profesores[i][7]=resultado.getInt("tel2");
                }
                i++;
            }
                
            tabla.setModel(new DefaultTableModel(profesores,
                    
                    new String[]{"Estado","Cédula del profesor","Profesor","Fecha de nacimiento","Correo #1","Correo #2","Teléfono #1","Teléfono #2"}
            
                    
                    ){

                boolean[] editColumn = new boolean[]{false,false,false,false,false,false,false,false};
                
                @Override
                public boolean isCellEditable(int row, int column) {
                    return editColumn[column];
                }
                
            });
            
        }catch (SQLException e) {   
            JOptionPane.showMessageDialog(null, "\nImposible cargar datos de profesores\nError en la base de datos", "Error", JOptionPane.ERROR_MESSAGE);
            e.printStackTrace();
            conexion = null;
            
        }
        finally {
            if (resultado != null) {
                try {
                resultado.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (sentencia != null) {
                try {
                sentencia.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (conexion != null) {
                try {
                conexion.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
     
        
        tabla.getColumnModel().getColumn(0).setMaxWidth(55);
        tabla.getColumnModel().getColumn(0).setMinWidth(55);
        tabla.getColumnModel().getColumn(1).setMaxWidth(115);
        tabla.getColumnModel().getColumn(1).setMinWidth(115);
        tabla.getColumnModel().getColumn(2).setMaxWidth(300);
        tabla.getColumnModel().getColumn(2).setMinWidth(300);
        tabla.getColumnModel().getColumn(3).setMaxWidth(110);
        tabla.getColumnModel().getColumn(3).setMinWidth(110);
        tabla.getColumnModel().getColumn(4).setMaxWidth(390);
        tabla.getColumnModel().getColumn(4).setMinWidth(390);
        tabla.getColumnModel().getColumn(5).setMaxWidth(390);
        tabla.getColumnModel().getColumn(5).setMinWidth(390);
        tabla.getColumnModel().getColumn(6).setMaxWidth(70);
        tabla.getColumnModel().getColumn(6).setMinWidth(70);
        tabla.getColumnModel().getColumn(7).setMaxWidth(70);
        tabla.getColumnModel().getColumn(7).setMinWidth(70);
        
    } 
    
    private void initComponents6(){
        scrollProfesoresAsignar.getViewport().setBackground(Color.WHITE);
        scrollCursosAsignar.getViewport().setBackground(Color.WHITE);
        campoBusquedaProfAsignar.requestFocus();
        
        ListSelectionModel listSelectionModel1 = tablaProfesoresAsignar.getSelectionModel();
        listSelectionModel1.addListSelectionListener(new ListSelectionListener() {
            @Override
            public void valueChanged(ListSelectionEvent e) { 
                ListSelectionModel lsm = (ListSelectionModel)e.getSource();
                if(!lsm.isSelectionEmpty()){
                    cargarCursosAsignacion();
                    campoBusquedaCursoAsignar.requestFocus();
                    habilitarCancelarAsignacion();
                }
                else{
                    limpiarTablaCursosAsignar();
                    campoBusquedaCursoAsignar.setText("");
                    deshabilitarCancelarAsignacion();
                    deshabilitarRegistrarAsignacion();
                }
            }
        });    
        
        ListSelectionModel listSelectionModel2 = tablaCursosAsignar.getSelectionModel();
        listSelectionModel2.addListSelectionListener(new ListSelectionListener() {
            @Override
            public void valueChanged(ListSelectionEvent e) { 
                ListSelectionModel lsm = (ListSelectionModel)e.getSource();
                if(!lsm.isSelectionEmpty()){
                    campoBusquedaCursoAsignar.requestFocus();
                    habilitarRegistrarAsignacion();
                    habilitarCancelarAsignacion();
                }
                else{
                    deshabilitarRegistrarAsignacion();
                    deshabilitarCancelarAsignacion();
                }
            }
        }); 
        
        tablaProfesoresAsignar.getColumnModel().getColumn(0).setMaxWidth(95);
        tablaProfesoresAsignar.getColumnModel().getColumn(0).setMinWidth(95);
        tablaProfesoresAsignar.getColumnModel().getColumn(1).setMaxWidth(345);
        tablaProfesoresAsignar.getColumnModel().getColumn(1).setMinWidth(345);
        tablaCursosAsignar.getColumnModel().getColumn(0).setMaxWidth(45);
        tablaCursosAsignar.getColumnModel().getColumn(0).setMinWidth(45);
        tablaCursosAsignar.getColumnModel().getColumn(1).setMaxWidth(395);
        tablaCursosAsignar.getColumnModel().getColumn(1).setMinWidth(395);
    }
    
    private void habilitarCancelarAsignacion(){
        btnCancelarAsignacion.setEnabled(true);
    }
        
    private void habilitarRegistrarAsignacion(){
        btnRegistrarAsignacion.setEnabled(true);
    }
    
    private void deshabilitarRegistrarAsignacion(){
        btnRegistrarAsignacion.setEnabled(false);
    }
    
    private void deshabilitarCancelarAsignacion(){
        if(tablaProfesoresAsignar.getSelectedRow()==-1&&tablaCursosAsignar.getSelectedRow()==-1){
            btnCancelarAsignacion.setEnabled(false);
        }
    }
    
    private void puedeAsignar(){
        if(btnRegistrarAsignacion.isEnabled()){
            int confirmado = JOptionPane.showOptionDialog(
                null,"Confirmar asignación del curso: "+tablaCursosAsignar.getValueAt(tablaCursosAsignar.getSelectedRow(), 0)+"-"+((String)tablaCursosAsignar.getValueAt(tablaCursosAsignar.getSelectedRow(), 1)).replaceAll("\\s+$","")+"\n"
                    + "\nal profesor: "+tablaProfesoresAsignar.getValueAt(tablaProfesoresAsignar.getSelectedRow(), 0)+"-"+((String)tablaProfesoresAsignar.getValueAt(tablaProfesoresAsignar.getSelectedRow(), 1)).replaceAll("\\s+$","")+"\n\nConfirmación requerida", "Confirmación requerida",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE,
                null,    // null para icono por defecto.
                new Object[] { "Correcto", "Cancelar"},   // null para YES, NO y CANCEL
                null);
                
            if(confirmado==0){
                Connection conexion=null;
                Statement sentencia=null;
                ResultSet resultado=null;
        
                try {
                    Class.forName("org.postgresql.Driver");
                }catch (ClassNotFoundException e) {
                    e.printStackTrace();
                }
                try{
                    conexion = DriverManager.getConnection(cadenaConexion);
                    sentencia = conexion.createStatement();
          
                    String consultaSQL = "insert into profesor_por_clase (profesor,curso) VALUES ('"+tablaProfesoresAsignar.getValueAt(tablaProfesoresAsignar.getSelectedRow(), 0)+"',"+tablaCursosAsignar.getValueAt(tablaCursosAsignar.getSelectedRow(), 0)+")";
                    resultado = sentencia.executeQuery(consultaSQL);

                } catch (SQLException e) {
                    if(e.getSQLState().equals("02000")){ //no_data , una inserción no devuelve nada
                        JOptionPane.showMessageDialog(null,"\n ¡Asignación de curso a dicho profesor efectuada con éxito!","Éxito",JOptionPane.INFORMATION_MESSAGE);
                        limpiarPanelAsignacionCurso();
                    }
                    else{       
                        JOptionPane.showMessageDialog(null, "\n Error en la base de datos \nImposible realizar la asignación", "Error", JOptionPane.ERROR_MESSAGE);
                        e.printStackTrace();
                        conexion = null;
                    }
                }
                finally {
                    if (resultado != null) {
                        try {
                            resultado.close();
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                    if (sentencia != null) {
                        try {
                            sentencia.close();
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                    if (conexion != null) {
                        try {
                            conexion.close();
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        }
    }
    
    private void cancelarAsignacionCurso(){
        if(btnCancelarAsignacion.isEnabled()){
            campoBusquedaProfAsignar.requestFocus();
            btnRegistrarAsignacion.setEnabled(false);
            btnCancelarAsignacion.setEnabled(false);
            campoBusquedaProfAsignar.setText("");
            campoBusquedaCursoAsignar.setText("");
            asignarProfesorSorter();
            limpiarTablaCursosAsignar();
        }
    }
    
    private void limpiarPanelAsignacionCurso(){
        campoBusquedaProfAsignar.requestFocus();
        btnRegistrarAsignacion.setEnabled(false);
        btnCancelarAsignacion.setEnabled(false);
        campoBusquedaProfAsignar.setText("");
        campoBusquedaCursoAsignar.setText("");
        asignarProfesorSorter();
        limpiarTablaCursosAsignar();
    }
    
    private void asignarProfesorSorter(){
        TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(tablaProfesoresAsignar.getModel());
        tablaProfesoresAsignar.setRowSorter(sorter);
        if(campoBusquedaProfAsignar.getText().isEmpty()){
            sorter.setRowFilter(null);
        }    
        else{
            try{
                sorter.setRowFilter(RowFilter.regexFilter(campoBusquedaProfAsignar.getText()));
            }catch (PatternSyntaxException pse) {
                System.err.println("Bad regex pattern");
            }
        }
    }
    
    private void asignarCursoSorter(){
        TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(tablaCursosAsignar.getModel());
        tablaCursosAsignar.setRowSorter(sorter);
        if(campoBusquedaCursoAsignar.getText().isEmpty()){
            sorter.setRowFilter(null);
        }    
        else{
            try{
                sorter.setRowFilter(RowFilter.regexFilter(campoBusquedaCursoAsignar.getText()));
            }catch (PatternSyntaxException pse) {
                System.err.println("Bad regex pattern");
            }
        }
    }
    
    private void limpiarTablaCursosAsignar(){
        tablaCursosAsignar.setModel(new DefaultTableModel(null,
                    
                    new String[]{"Código","Curso"}
                                
                    ){

                boolean[] editColumn = new boolean[]{false,false};
                
                @Override
                public boolean isCellEditable(int row, int column) {
                    return editColumn[column];
                }
                
            });
        tablaCursosAsignar.getColumnModel().getColumn(0).setMaxWidth(45);
        tablaCursosAsignar.getColumnModel().getColumn(0).setMinWidth(45);
        tablaCursosAsignar.getColumnModel().getColumn(1).setMaxWidth(395);
        tablaCursosAsignar.getColumnModel().getColumn(1).setMinWidth(395);
    }
    
    private void cargarProfesoresAsignacion(JTable tabla){
        Connection conexion=null;
        Statement sentencia=null;
        ResultSet resultado=null;
        Object[][] profesores;
        
        try {
            Class.forName("org.postgresql.Driver");
        }catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        try{
            conexion = DriverManager.getConnection(cadenaConexion);
            sentencia = conexion.createStatement();
            String consultaSQL = "select cedula,nombre,apellido1,apellido2 from profesor where activo='true'";
            resultado = sentencia.executeQuery(consultaSQL);
            
            int sizeProfesores=0;
            while (resultado.next()) {
                sizeProfesores++;
            }
            
            profesores = new Object[sizeProfesores][2];
            resultado = sentencia.executeQuery(consultaSQL);
            int i=0;
            while (resultado.next()) {
                profesores[i][0]=resultado.getString("cedula").replaceAll("\\s+$","");
                String prof=resultado.getString("nombre").replaceAll("\\s+$","")+" "+resultado.getString("apellido1").replaceAll("\\s+$","");
                if(resultado.getString("apellido2")!=null){
                    prof=prof+" "+resultado.getString("apellido2").replaceAll("\\s+$","");
                }
                profesores[i][1]=prof;
                i++;
            }
                
            tabla.setModel(new DefaultTableModel(profesores,
                    
                    new String[]{"Cédula","Profesor"}
                                
                    ){

                boolean[] editColumn = new boolean[]{false,false};
                
                @Override
                public boolean isCellEditable(int row, int column) {
                    return editColumn[column];
                }
                
            });
            
        }catch (SQLException e) {   
            JOptionPane.showMessageDialog(null, "\nImposible cargar datos de profesores activos \nError en la base de datos", "Error", JOptionPane.ERROR_MESSAGE);
            e.printStackTrace();
            conexion = null;
            
        }
        finally {
            if (resultado != null) {
                try {
                resultado.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (sentencia != null) {
                try {
                sentencia.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (conexion != null) {
                try {
                conexion.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
     
        
        tabla.getColumnModel().getColumn(0).setMaxWidth(95);
        tabla.getColumnModel().getColumn(0).setMinWidth(95);
        tabla.getColumnModel().getColumn(1).setMaxWidth(345);
        tabla.getColumnModel().getColumn(1).setMinWidth(345);
        
    }
    
    private void cargarCursosAsignacion(){
        Connection conexion=null;
        Statement sentencia=null;
        ResultSet resultado=null;
        Object[][] cursos;
        
        try {
            Class.forName("org.postgresql.Driver");
        }catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        try{
            conexion = DriverManager.getConnection(cadenaConexion);
            sentencia = conexion.createStatement();
            String consultaSQL = "select codigo,nombre from curso where activo='true' and codigo not in (select curso from profesor_por_clase where profesor='"+tablaProfesoresAsignar.getValueAt(tablaProfesoresAsignar.getSelectedRow(), 0)+"')";
            resultado = sentencia.executeQuery(consultaSQL);
            
            int sizeCursos=0;
            while (resultado.next()) {
                sizeCursos++;
            }
            
            cursos = new Object[sizeCursos][2];
            resultado = sentencia.executeQuery(consultaSQL);
            int i=0;
            while (resultado.next()) {
                cursos[i][0]=resultado.getInt("codigo");
                cursos[i][1]=resultado.getString("nombre").replaceAll("\\s+$","");
                i++;
            }
                
            tablaCursosAsignar.setModel(new DefaultTableModel(cursos,
                    
                    new String[]{"Código","Curso"}
                                
                    ){

                boolean[] editColumn = new boolean[]{false,false};
                
                @Override
                public boolean isCellEditable(int row, int column) {
                    return editColumn[column];
                }
                
            });
            
        }catch (SQLException e) {   
            JOptionPane.showMessageDialog(null, "\nImposible cargar datos de cursos activos \nError en la base de datos", "Error", JOptionPane.ERROR_MESSAGE);
            e.printStackTrace();
            conexion = null;
            
        }
        finally {
            if (resultado != null) {
                try {
                resultado.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (sentencia != null) {
                try {
                sentencia.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (conexion != null) {
                try {
                conexion.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        
        tablaCursosAsignar.getColumnModel().getColumn(0).setMaxWidth(45);
        tablaCursosAsignar.getColumnModel().getColumn(0).setMinWidth(45);
        tablaCursosAsignar.getColumnModel().getColumn(1).setMaxWidth(395);
        tablaCursosAsignar.getColumnModel().getColumn(1).setMinWidth(395);
        
    } 
    
    //////////////////////////////////////////////////////////////////////////////////
    
   
    private void initComponents7(){
        scrollProfesoresDesasignar.getViewport().setBackground(Color.WHITE);
        scrollCursosDesasignar.getViewport().setBackground(Color.WHITE);
        campoBusquedaProfDesasignar.requestFocus();
        
        ListSelectionModel listSelectionModel1 = tablaProfesoresDesasignar.getSelectionModel();
        listSelectionModel1.addListSelectionListener(new ListSelectionListener() {
            @Override
            public void valueChanged(ListSelectionEvent e) { 
                ListSelectionModel lsm = (ListSelectionModel)e.getSource();
                if(!lsm.isSelectionEmpty()){
                    cargarCursosDesasignacion();
                    campoBusquedaCursoDesasignar.requestFocus();
                    habilitarCancelarDesasignacion();
                }
                else{
                    limpiarTablaCursosDesasignar();
                    campoBusquedaCursoDesasignar.setText("");
                    deshabilitarCancelarDesasignacion();
                    deshabilitarRegistrarDesasignacion();
                }
            }
        });    
        
        ListSelectionModel listSelectionModel2 = tablaCursosDesasignar.getSelectionModel();
        listSelectionModel2.addListSelectionListener(new ListSelectionListener() {
            @Override
            public void valueChanged(ListSelectionEvent e) { 
                ListSelectionModel lsm = (ListSelectionModel)e.getSource();
                if(!lsm.isSelectionEmpty()){
                    campoBusquedaCursoDesasignar.requestFocus();
                    habilitarRegistrarDesasignacion();
                    habilitarCancelarDesasignacion();
                }
                else{
                    deshabilitarRegistrarDesasignacion();
                    deshabilitarCancelarDesasignacion();
                }
            }
        }); 
        
        tablaProfesoresDesasignar.getColumnModel().getColumn(0).setMaxWidth(95);
        tablaProfesoresDesasignar.getColumnModel().getColumn(0).setMinWidth(95);
        tablaProfesoresDesasignar.getColumnModel().getColumn(1).setMaxWidth(345);
        tablaProfesoresDesasignar.getColumnModel().getColumn(1).setMinWidth(345);
        tablaCursosDesasignar.getColumnModel().getColumn(0).setMaxWidth(45);
        tablaCursosDesasignar.getColumnModel().getColumn(0).setMinWidth(45);
        tablaCursosDesasignar.getColumnModel().getColumn(1).setMaxWidth(395);
        tablaCursosDesasignar.getColumnModel().getColumn(1).setMinWidth(395);
    }
    
    private void habilitarCancelarDesasignacion(){
        btnCancelarDesasignacion.setEnabled(true);
    }
        
    private void habilitarRegistrarDesasignacion(){
        btnRealizarDesasignacion.setEnabled(true);
    }
    
    private void deshabilitarRegistrarDesasignacion(){
        btnRealizarDesasignacion.setEnabled(false);
    }
    
    private void deshabilitarCancelarDesasignacion(){
        if(tablaProfesoresDesasignar.getSelectedRow()==-1&&tablaCursosDesasignar.getSelectedRow()==-1){
            btnCancelarDesasignacion.setEnabled(false);
        }
    }
    
    private void puedeDesasignar(){
        if(btnRealizarDesasignacion.isEnabled()){
            int confirmado = JOptionPane.showOptionDialog(
                null,"Confirmar desasignación del curso: "+tablaCursosDesasignar.getValueAt(tablaCursosDesasignar.getSelectedRow(), 0)+"-"+((String)tablaCursosDesasignar.getValueAt(tablaCursosDesasignar.getSelectedRow(), 1)).replaceAll("\\s+$","")+"\n"
                    + "\nal profesor: "+tablaProfesoresDesasignar.getValueAt(tablaProfesoresDesasignar.getSelectedRow(), 0)+"-"+((String)tablaProfesoresDesasignar.getValueAt(tablaProfesoresDesasignar.getSelectedRow(), 1)).replaceAll("\\s+$","")+"\n\nConfirmación requerida", "Confirmación requerida",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE,
                null,    // null para icono por defecto.
                new Object[] { "Correcto", "Cancelar"},   // null para YES, NO y CANCEL
                null);
                
            if(confirmado==0){
                Connection conexion=null;
                Statement sentencia=null;
                ResultSet resultado=null;
        
                try {
                    Class.forName("org.postgresql.Driver");
                }catch (ClassNotFoundException e) {
                    e.printStackTrace();
                }
                try{
                    conexion = DriverManager.getConnection(cadenaConexion);
                    sentencia = conexion.createStatement();
          
                    String consultaSQL = "delete from profesor_por_clase where profesor='"+tablaProfesoresDesasignar.getValueAt(tablaProfesoresDesasignar.getSelectedRow(), 0)+"' and curso="+tablaCursosDesasignar.getValueAt(tablaCursosDesasignar.getSelectedRow(), 0);
                    resultado = sentencia.executeQuery(consultaSQL);

                } catch (SQLException e) {
                    if(e.getSQLState().equals("02000")){ //no_data , unaeliminación no devuelve nada
                        JOptionPane.showMessageDialog(null,"\n ¡Desasignación de curso a dicho profesor efectuada con éxito!","Éxito",JOptionPane.INFORMATION_MESSAGE);
                        limpiarPanelDesasignacionCurso();
                    }
                    else{       
                        JOptionPane.showMessageDialog(null, "\n Error en la base de datos \nImposible realizar la desasignación", "Error", JOptionPane.ERROR_MESSAGE);
                        e.printStackTrace();
                        conexion = null;
                    }
                }
                finally {
                    if (resultado != null) {
                        try {
                            resultado.close();
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                    if (sentencia != null) {
                        try {
                            sentencia.close();
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                    if (conexion != null) {
                        try {
                            conexion.close();
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        }
    }
    
    private void cancelarDesasignacionCurso(){
        if(btnCancelarDesasignacion.isEnabled()){
            campoBusquedaProfDesasignar.requestFocus();
            btnRealizarDesasignacion.setEnabled(false);
            btnCancelarDesasignacion.setEnabled(false);
            campoBusquedaProfDesasignar.setText("");
            campoBusquedaCursoDesasignar.setText("");
            desasignarProfesorSorter();
            limpiarTablaCursosDesasignar();
        }
    }
    
    private void limpiarPanelDesasignacionCurso(){
        campoBusquedaProfDesasignar.requestFocus();
        btnRealizarDesasignacion.setEnabled(false);
        btnCancelarDesasignacion.setEnabled(false);
        campoBusquedaProfDesasignar.setText("");
        campoBusquedaCursoDesasignar.setText("");
        desasignarProfesorSorter();
        limpiarTablaCursosDesasignar();
    }
    
    private void desasignarProfesorSorter(){
        TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(tablaProfesoresDesasignar.getModel());
        tablaProfesoresDesasignar.setRowSorter(sorter);
        if(campoBusquedaProfDesasignar.getText().isEmpty()){
            sorter.setRowFilter(null);
        }    
        else{
            try{
                sorter.setRowFilter(RowFilter.regexFilter(campoBusquedaProfDesasignar.getText()));
            }catch (PatternSyntaxException pse) {
                System.err.println("Bad regex pattern");
            }
        }
    }
    
    private void desasignarCursoSorter(){
        TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(tablaCursosDesasignar.getModel());
        tablaCursosDesasignar.setRowSorter(sorter);
        if(campoBusquedaCursoDesasignar.getText().isEmpty()){
            sorter.setRowFilter(null);
        }    
        else{
            try{
                sorter.setRowFilter(RowFilter.regexFilter(campoBusquedaCursoDesasignar.getText()));
            }catch (PatternSyntaxException pse) {
                System.err.println("Bad regex pattern");
            }
        }
    }
    
    private void limpiarTablaCursosDesasignar(){
        tablaCursosDesasignar.setModel(new DefaultTableModel(null,
                    
                    new String[]{"Código","Curso"}
                                
                    ){

                boolean[] editColumn = new boolean[]{false,false};
                
                @Override
                public boolean isCellEditable(int row, int column) {
                    return editColumn[column];
                }
                
            });
        tablaCursosDesasignar.getColumnModel().getColumn(0).setMaxWidth(45);
        tablaCursosDesasignar.getColumnModel().getColumn(0).setMinWidth(45);
        tablaCursosDesasignar.getColumnModel().getColumn(1).setMaxWidth(395);
        tablaCursosDesasignar.getColumnModel().getColumn(1).setMinWidth(395);
    }
    
    private void cargarProfesoresDesasignacion(JTable tabla){
        Connection conexion=null;
        Statement sentencia=null;
        ResultSet resultado=null;
        Object[][] profesores;
        
        try {
            Class.forName("org.postgresql.Driver");
        }catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        try{
            conexion = DriverManager.getConnection(cadenaConexion);
            sentencia = conexion.createStatement();
            String consultaSQL = "select distinct cedula,nombre,apellido1,apellido2 from (select cedula,nombre,apellido1,apellido2 from profesor where activo='true')alias1,(select profesor from profesor_por_clase)alias2 where alias1.cedula=alias2.profesor";
            resultado = sentencia.executeQuery(consultaSQL);
            
            int sizeProfesores=0;
            while (resultado.next()) {
                sizeProfesores++;
            }
            
            profesores = new Object[sizeProfesores][2];
            resultado = sentencia.executeQuery(consultaSQL);
            int i=0;
            while (resultado.next()) {
                profesores[i][0]=resultado.getString("cedula").replaceAll("\\s+$","");
                String prof=resultado.getString("nombre").replaceAll("\\s+$","")+" "+resultado.getString("apellido1").replaceAll("\\s+$","");
                if(resultado.getString("apellido2")!=null){
                    prof=prof+" "+resultado.getString("apellido2").replaceAll("\\s+$","");
                }
                profesores[i][1]=prof;
                i++;
            }
                
            tabla.setModel(new DefaultTableModel(profesores,
                    
                    new String[]{"Cédula","Profesor"}
                                
                    ){

                boolean[] editColumn = new boolean[]{false,false};
                
                @Override
                public boolean isCellEditable(int row, int column) {
                    return editColumn[column];
                }
                
            });
            
        }catch (SQLException e) {   
            JOptionPane.showMessageDialog(null, "\nImposible cargar datos de profesores con cursos asignados\nError en la base de datos", "Error", JOptionPane.ERROR_MESSAGE);
            e.printStackTrace();
            conexion = null;
            
        }
        finally {
            if (resultado != null) {
                try {
                resultado.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (sentencia != null) {
                try {
                sentencia.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (conexion != null) {
                try {
                conexion.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
     
        
        tabla.getColumnModel().getColumn(0).setMaxWidth(95);
        tabla.getColumnModel().getColumn(0).setMinWidth(95);
        tabla.getColumnModel().getColumn(1).setMaxWidth(345);
        tabla.getColumnModel().getColumn(1).setMinWidth(345);
        
    }
    
    private void cargarCursosDesasignacion(){
        Connection conexion=null;
        Statement sentencia=null;
        ResultSet resultado=null;
        Object[][] cursos;
        
        try {
            Class.forName("org.postgresql.Driver");
        }catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        try{
            conexion = DriverManager.getConnection(cadenaConexion);
            sentencia = conexion.createStatement();
            String consultaSQL = "select codigo,nombre from (select codigo,nombre from curso where activo='true')alias1,(select curso from profesor_por_clase where profesor='"+tablaProfesoresDesasignar.getValueAt(tablaProfesoresDesasignar.getSelectedRow(), 0)+"')alias2 where alias1.codigo=alias2.curso";
            resultado = sentencia.executeQuery(consultaSQL);
            
            int sizeCursos=0;
            while (resultado.next()) {
                sizeCursos++;
            }
            
            cursos = new Object[sizeCursos][2];
            resultado = sentencia.executeQuery(consultaSQL);
            int i=0;
            while (resultado.next()) {
                cursos[i][0]=resultado.getInt("codigo");
                cursos[i][1]=resultado.getString("nombre").replaceAll("\\s+$","");
                i++;
            }
                
            tablaCursosDesasignar.setModel(new DefaultTableModel(cursos,
                    
                    new String[]{"Código","Curso"}
                                
                    ){

                boolean[] editColumn = new boolean[]{false,false};
                
                @Override
                public boolean isCellEditable(int row, int column) {
                    return editColumn[column];
                }
                
            });
            
        }catch (SQLException e) {   
            JOptionPane.showMessageDialog(null, "\nImposible cargar datos de cursos asignados al profesor seleccionado\nError en la base de datos", "Error", JOptionPane.ERROR_MESSAGE);
            e.printStackTrace();
            conexion = null;
            
        }
        finally {
            if (resultado != null) {
                try {
                resultado.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (sentencia != null) {
                try {
                sentencia.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (conexion != null) {
                try {
                conexion.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        
        tablaCursosDesasignar.getColumnModel().getColumn(0).setMaxWidth(45);
        tablaCursosDesasignar.getColumnModel().getColumn(0).setMinWidth(45);
        tablaCursosDesasignar.getColumnModel().getColumn(1).setMaxWidth(395);
        tablaCursosDesasignar.getColumnModel().getColumn(1).setMinWidth(395);
        
    } 
    
    private void initComponents8(){
        scrollMostrarAsignaciones.getViewport().setBackground(Color.WHITE);
        tablaMostrarAsignaciones.getColumnModel().getColumn(0).setMaxWidth(360);
        tablaMostrarAsignaciones.getColumnModel().getColumn(0).setMinWidth(360);
        tablaMostrarAsignaciones.getColumnModel().getColumn(1).setMaxWidth(360);
        tablaMostrarAsignaciones.getColumnModel().getColumn(1).setMinWidth(360);
    }
    
    private void popUpFormaBusqueda(){
        if(btnBusqueda.isEnabled()){
            int confirmado = JOptionPane.showOptionDialog(
                null,"Elija cómo desea realizar la búsqueda", "Acción requerida",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE,
                null,    // null para icono por defecto.
                new Object[] { "Por profesor", "Por curso"},   // null para YES, NO y CANCEL
                null);
                
            if(confirmado==0){
                formaBusqueda=0;
                modoBusqueda();
            }
            else{
                formaBusqueda=1;
                modoBusqueda();
            }
        }
    }
    
    private void modoBusqueda(){
        btnBusqueda.setEnabled(false);
        campoBusqueda.setEnabled(true);
        btnCancelarBusqueda.setEnabled(true);
    }
    
    private void limpiarPanelMostrarAsignacion(){
        btnBusqueda.setEnabled(true);
        campoBusqueda.setText("");
        campoBusqueda.setEnabled(false);
        btnCancelarBusqueda.setEnabled(false);
        buscarAsignacionProfesorSorter();
    }
    
    private void modoCancelar(){
        if(btnCancelarBusqueda.isEnabled()){
            btnBusqueda.setEnabled(true);
            campoBusqueda.setText("");
            campoBusqueda.setEnabled(false);
            btnCancelarBusqueda.setEnabled(false);
            buscarAsignacionProfesorSorter();
        }
    }
    
    private void buscarAsignacionProfesorSorter(){
        TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(tablaMostrarAsignaciones.getModel());
        tablaMostrarAsignaciones.setRowSorter(sorter);
        if(campoBusqueda.getText().isEmpty()){
            sorter.setRowFilter(null);
        }    
        else{
            try{
                sorter.setRowFilter(RowFilter.regexFilter(campoBusqueda.getText(),0));
            }catch (PatternSyntaxException pse) {
                System.err.println("Bad regex pattern");
            }
        }
    }
    
    private void buscarAsignacionCursoSorter(){
        TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(tablaMostrarAsignaciones.getModel());
        tablaMostrarAsignaciones.setRowSorter(sorter);
        if(campoBusqueda.getText().isEmpty()){
            sorter.setRowFilter(null);
        }    
        else{
            try{
                sorter.setRowFilter(RowFilter.regexFilter(campoBusqueda.getText(),1));
            }catch (PatternSyntaxException pse) {
                System.err.println("Bad regex pattern");
            }
        }
    }
    
    private void buscarAsignacion(){
        if(formaBusqueda==0){
            buscarAsignacionProfesorSorter();
        }
        else{
            buscarAsignacionCursoSorter();
        }
    }
    
    private void cargarAsignaciones(){
        Connection conexion=null;
        Statement sentencia=null;
        ResultSet resultado=null;
        Object[][] asignaciones;
        
        try {
            Class.forName("org.postgresql.Driver");
        }catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        try{
            conexion = DriverManager.getConnection(cadenaConexion);
            sentencia = conexion.createStatement();
            String curso="select codigo,nombre,profesor from (select codigo,nombre from curso where activo='true')alias1,(select curso,profesor from profesor_por_clase)alias2 where alias1.codigo=alias2.curso";
            String profesor="select cedula,nombre,apellido1,apellido2,curso from (select cedula,nombre,apellido1,apellido2 from profesor where activo='true')alias3,(select profesor,curso from profesor_por_clase)alias4 where alias3.cedula=alias4.profesor";
            String consultaSQL = "select curso,alias5.nombre as nombre_curso,profesor,alias6.nombre as nombre_prof,apellido1,apellido2 from ("+curso+")alias5,("+profesor+")alias6 where alias5.codigo=alias6.curso and alias5.profesor=alias6.cedula";
            resultado = sentencia.executeQuery(consultaSQL);
            
            int sizeCursos=0;
            while (resultado.next()) {
                sizeCursos++;
            }
            
            asignaciones = new Object[sizeCursos][2];
            resultado = sentencia.executeQuery(consultaSQL);
            int i=0;
            while (resultado.next()) {
                asignaciones[i][0]=resultado.getString("profesor").replaceAll("\\s+$","");
                String prof=resultado.getString("nombre_prof").replaceAll("\\s+$","")+" "+resultado.getString("apellido1").replaceAll("\\s+$","");
                if(resultado.getString("apellido2")!=null){
                    prof=prof+" "+resultado.getString("apellido2").replaceAll("\\s+$","");
                }
                asignaciones[i][0]=asignaciones[i][0]+"-"+prof;
                asignaciones[i][1]=resultado.getInt("curso")+"-"+resultado.getString("nombre_curso").replaceAll("\\s+$","");
                i++;
            }
                
            tablaMostrarAsignaciones.setModel(new DefaultTableModel(asignaciones,
                    
                    new String[]{"Profesor","Curso asignado"}
                                
                    ){

                boolean[] editColumn = new boolean[]{false,false};
                
                @Override
                public boolean isCellEditable(int row, int column) {
                    return editColumn[column];
                }
                
            });
            
        }catch (SQLException e) {   
            JOptionPane.showMessageDialog(null, "\nImposible cargar datos de asignaciones\nError en la base de datos", "Error", JOptionPane.ERROR_MESSAGE);
            e.printStackTrace();
            conexion = null;
            
        }
        finally {
            if (resultado != null) {
                try {
                resultado.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (sentencia != null) {
                try {
                sentencia.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (conexion != null) {
                try {
                conexion.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        
        tablaMostrarAsignaciones.getColumnModel().getColumn(0).setMaxWidth(360);
        tablaMostrarAsignaciones.getColumnModel().getColumn(0).setMinWidth(360);
        tablaMostrarAsignaciones.getColumnModel().getColumn(1).setMaxWidth(360);
        tablaMostrarAsignaciones.getColumnModel().getColumn(1).setMinWidth(360);
        
    } 
    
    private String obtenerFechaDatePicker(JDateChooser picker){
        String diaFecha = ""+picker.getCalendar().get(Calendar.DAY_OF_MONTH);
        if(diaFecha.length()==1){
            diaFecha="0"+diaFecha;
        }
        String mesFecha = ""+(picker.getCalendar().get(Calendar.MONTH)+1);
        if(mesFecha.length()==1){
            mesFecha="0"+mesFecha;
        }
        return ""+diaFecha+"-"+mesFecha+"-"+picker.getCalendar().get(Calendar.YEAR);
    }
    
    private java.sql.Date getFechaNac(String fecha_nacim) {
        DateFormat df = new SimpleDateFormat("dd-MM-yyyy");
        java.util.Date parsedUtilDate;  
        java.sql.Date sqltDate=null;
        try {
            parsedUtilDate = df.parse(fecha_nacim);
            sqltDate= new java.sql.Date(parsedUtilDate.getTime()); 
        } catch (ParseException ex) {
            Logger.getLogger(VentanaModuloAdministrador.class.getName()).log(Level.SEVERE, null, ex);
        } 
        return sqltDate;
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Windows".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(VentanaModuloEstudianteEstandar.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(VentanaModuloEstudianteEstandar.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(VentanaModuloEstudianteEstandar.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(VentanaModuloEstudianteEstandar.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new VentanaModuloProfesorEstandar().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JLabel InfoProfAct;
    private javax.swing.JLabel InfoProfAgregar;
    private javax.swing.JLabel apellido1ProfAct;
    private javax.swing.JLabel apellido1ProfAgregar;
    private javax.swing.JLabel apellido2ProfAct;
    private javax.swing.JLabel apellido2ProfAgregar;
    private javax.swing.JLabel asignacionMostrar;
    private javax.swing.JLabel astApellido1ProfAgregar;
    private javax.swing.JLabel astApellidoProf1Act;
    private javax.swing.JLabel astCedulaProfAct;
    private javax.swing.JLabel astCedulaProfAgregar;
    private javax.swing.JLabel astCorreoAct;
    private javax.swing.JLabel astCorreoProfAgregar;
    private javax.swing.JLabel astEstadoProfAct;
    private javax.swing.JLabel astEstadoProfAgregar;
    private javax.swing.JLabel astFechaNacProfAct;
    private javax.swing.JLabel astFechaNacProfAgregar;
    private javax.swing.JLabel astNombreProfAct;
    private javax.swing.JLabel astNombreProfAgregar;
    private javax.swing.JLabel astTel1ProfAct;
    private javax.swing.JLabel astTel1ProfAgregar;
    private javax.swing.JButton btnActualizarProf;
    private javax.swing.JButton btnBusqueda;
    private javax.swing.JButton btnCancelarAsignacion;
    private javax.swing.JButton btnCancelarBusqueda;
    private javax.swing.JButton btnCancelarDesasignacion;
    private javax.swing.JButton btnCancelarProfAct;
    private javax.swing.JButton btnCancelarProfAgregar;
    private javax.swing.JButton btnCrearProfAgregar;
    private javax.swing.JButton btnNuevoProfAgregar;
    private javax.swing.JButton btnRealizarDesasignacion;
    private javax.swing.JButton btnRegistrarAsignacion;
    private javax.swing.JLabel busquedaCursoAsignar;
    private javax.swing.JLabel busquedaCursoDesasignar;
    private javax.swing.JLabel busquedaProfActualizar;
    private javax.swing.JLabel busquedaProfAsignar;
    private javax.swing.JLabel busquedaProfDesasignar;
    private javax.swing.JLabel busquedaProfEliminar;
    private javax.swing.JLabel busquedaProfMostrar;
    private javax.swing.JTextField campoApellido1ProfAct;
    private javax.swing.JTextField campoApellido1ProfAgregar;
    private javax.swing.JTextField campoApellido2ProfAct;
    private javax.swing.JTextField campoApellido2ProfAgregar;
    private javax.swing.JTextField campoBusqueda;
    private javax.swing.JTextField campoBusquedaCursoAsignar;
    private javax.swing.JTextField campoBusquedaCursoDesasignar;
    private javax.swing.JTextField campoBusquedaProfActualizar;
    private javax.swing.JTextField campoBusquedaProfAsignar;
    private javax.swing.JTextField campoBusquedaProfDesasignar;
    private javax.swing.JTextField campoBusquedaProfEliminar;
    private javax.swing.JTextField campoBusquedaProfMostrar;
    private javax.swing.JTextField campoCedulaProfAct;
    private javax.swing.JTextField campoCedulaProfAgregar;
    private javax.swing.JTextField campoEmailProf1Act;
    private javax.swing.JTextField campoEmailProf1Agregar;
    private javax.swing.JTextField campoEmailProf2Act;
    private javax.swing.JTextField campoEmailProf2Agregar;
    private com.toedter.calendar.JDateChooser campoFechaNacProfAct;
    private com.toedter.calendar.JDateChooser campoFechaNacProfAgregar;
    private javax.swing.JTextField campoNombreProfAct;
    private javax.swing.JTextField campoNombreProfAgregar;
    private javax.swing.JTextField campoTel1ProfAct;
    private javax.swing.JTextField campoTel1ProfAgregar;
    private javax.swing.JTextField campoTel2ProfAct;
    private javax.swing.JTextField campoTel2ProfAgregar;
    private javax.swing.JLabel cedulaProfAct;
    private javax.swing.JLabel cedulaProfAgregar;
    private javax.swing.JLabel correoProf1Act;
    private javax.swing.JLabel correoProf1Agregar;
    private javax.swing.JLabel correoProf2Act;
    private javax.swing.JLabel correoProf2Agregar;
    private javax.swing.JRadioButton estadoActivoProfAct;
    private javax.swing.JRadioButton estadoActivoProfAgregar;
    private javax.swing.JRadioButton estadoInactivoProfAct;
    private javax.swing.JRadioButton estadoInactivoProfAgregar;
    private javax.swing.JLabel estadoProfAct;
    private javax.swing.JLabel estadoProfAgregar;
    private javax.swing.JLabel fechaNacProfAct;
    private javax.swing.JLabel fechaNacProfAgregar;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel nombreProfAct;
    private javax.swing.JLabel nombreProfAgregar;
    private javax.swing.JScrollPane panelActualizarExpediente;
    private javax.swing.JPanel panelActualizarExpediente2;
    private javax.swing.JScrollPane panelAsignacionCursos;
    private javax.swing.JPanel panelAsignacionCursos2;
    private javax.swing.JPanel panelCrearExpediente;
    private javax.swing.JScrollPane panelDesasignacionCursos;
    private javax.swing.JPanel panelDesasignacionCursos2;
    private javax.swing.JPanel panelEliminarExpediente;
    private org.edisoncor.gui.panel.PanelImage panelImagenProfesor;
    private org.edisoncor.gui.panel.PanelImage panelImagenProfesor2;
    private javax.swing.JPanel panelManejoAsignacion;
    private javax.swing.JPanel panelManejoDesasignacion;
    private javax.swing.JPanel panelManejoExpediente;
    private javax.swing.JPanel panelManejoExpediente2;
    private javax.swing.JPanel panelManejoExpediente3;
    private javax.swing.JPanel panelManejoExpediente4;
    private javax.swing.JPanel panelManejoMostrarAsignaciones;
    private javax.swing.JPanel panelMostrarAsignacionesCursos;
    private javax.swing.JPanel panelMostrarExpediente;
    private javax.swing.JTabbedPane panelOpcionesProfesor;
    private javax.swing.JScrollPane scrollCursosAsignar;
    private javax.swing.JScrollPane scrollCursosDesasignar;
    private javax.swing.JScrollPane scrollMostrarAsignaciones;
    private javax.swing.JScrollPane scrollProfesoresActualizar;
    private javax.swing.JScrollPane scrollProfesoresAsignar;
    private javax.swing.JScrollPane scrollProfesoresDesasignar;
    private javax.swing.JScrollPane scrollProfesoresEliminar;
    private javax.swing.JScrollPane scrollProfesoresMostrar;
    private javax.swing.JLabel seleccioProfesor;
    private javax.swing.JLabel seleccioProfesorDesasignacion;
    private javax.swing.JLabel seleccionCurso;
    private javax.swing.JLabel seleccionCursoDesasignacion;
    private javax.swing.JTable tablaCursosAsignar;
    private javax.swing.JTable tablaCursosDesasignar;
    private javax.swing.JTable tablaMostrarAsignaciones;
    private javax.swing.JTable tablaProfesoresActualizar;
    private javax.swing.JTable tablaProfesoresAsignar;
    private javax.swing.JTable tablaProfesoresDesasignar;
    private javax.swing.JTable tablaProfesoresEliminar;
    private javax.swing.JTable tablaProfesoresMostrar;
    private javax.swing.JLabel tel1ProfAct;
    private javax.swing.JLabel tel1ProfAgregar;
    private javax.swing.JLabel tel2ProfAct;
    private javax.swing.JLabel tel2ProfAgregar;
    // End of variables declaration//GEN-END:variables
    private static final String cadenaConexion = "jdbc:postgresql://localhost/SMAAMDB?" + "user=postgres&password=root";
    private static final String msjLetras = "Sólo letras";
    private static final String msjNumeros = "Sólo números";
    private static final String patronEmail = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
            + "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
    private JTable tablaEstAct2;
    private int formaBusqueda;
    
    /*
    Comienzo del patrón
^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$;
Caracteres por los que puede comenzar la dirección del correo electrónico
^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$;
Caracteres opcionales.
^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$;
La dirección de correo debe contener el símbolo @
^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$;
El nombre del dominio del correo debe comenzar por estos caracteres
^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$;
El primer dominio de nivel superior o TLD debe de comenzar por punto seguido por los caracteres resaltados
^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$;
El primer nivel TLD puede ir seguido opcionalmente por un segundo nivel TLD que debe ser de tener 2 o más caracteres
^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$;
     */

    @Override
    public void update(Observable o, Object arg) {
        
    }
}
